There is a newer version of Luda.

Let's go!

Toggle

Quickly show or hide elements without writting any Javascript code.

Introduction

It’s a very common situation to show or hide an element dynamically in front-end development. Toggle behavior helps you to do this without having to write Javascript codes. Let’s see the below examples for clarification.

Examples

Hello Luda!

<button class="btn btn-primary" data-toggle-for="toggle_example">Click to toggle</button>
<div class="bc-dark p-small" data-toggle-target="toggle_example">
  <p class="c-light">Hello Luda!</p>
</div>

In this example, we use the data-toggle-target attribute to define a target, and use the data-toggle-for attribute to define a trigger. The values of these two attributes must be the same.

Let’s see another example.

<button class="btn btn-primary" data-toggle-for="toggle_example2">Click to toggle</button>
<div class="bc-dark p-small" data-toggle-target="toggle_example2" data-toggle>
  <button class="btn btn-primary">Click to hide</button>
  <button class="btn btn-light" data-toggle-disabled>Toggle behavior disabled</button>
</div>

In this example, we add the attribute data-toggle to the target element to make it an anonymous trigger for itself. We use the attribute data-toggle-disabled to partially disable the behavior in the target, so when the disabled area clicked, the target will not be hided.

HTML Attributes

data-toggle-target

<div data-toggle-target="demo"></div>

Define a target.

data-toggle-for

<div data-toggle-for="demo"></div>

Define a trigger, the value must be the same as the value of its target’s data-toggle-target attribute.

data-toggle

<div data-toggle-for="demo" data-toggle></div>

Define an anonymous trigger wrapped in the target or make the target an anonymous trigger fot itself.

data-toggle-disabled

<div data-toggle-for="demo" data-toggle>
  <div data-toggle-disabled></div>
</div>

Disable the behavior partially in an anonymous trigger.

data-toggle-auto-deactivate

<div data-toggle-target="demo" data-toggle-auto-deactivate="4000">...</div>

Make a target automatically deactivated after activated. The default value is 3000, which means the target will be deactivated automatically after 3000 milliseconds whenever it’s activated.

Javascript Methods

luda.toggle.activate(name | element)

luda.toggle.activate('demo')

Activate a target by passing in the value of its data-toggle-target attribute.

luda.toggle.activate(document.querySelector('[data-toggle-target="demo"]'))

Activate a target by passing in the Element instance.

luda.toggle.deactivate(name | element)

luda.toggle.deactivate('demo')

Deactivate a target by passing in the value of its data-toggle-target attribute.

luda.toggle.deactivate(document.querySelector('[data-toggle-target="demo"]'))

Deactivate a target by passing the the Element instance.

luda.toggle.toggle(name | element)

luda.toggle.toggle('demo')

Activate or deactivate a target depending on its state by passing in the value of its data-toggle-target attribute.

luda.toggle.toggle(document.querySelector('[data-toggle-target="demo"]'))

Activate or deactivate a target depending on its state by passing in the Element instance.

Dom Events

luda:toggle:activate

luda.on('luda:toggle:activate', '#myTarget', function(event){
  let $myTarget = this
  event.preventDefault() // Prevent the target from being activated if necessary.
})

Will be triggered before the .toggle-active class added to the target.

luda:toggle:activated

luda.on('luda:toggle:activated', '#myTarget', function(event){
  let $myTarget = this
})

Will be triggered after the .toggle-active class added to the target and CSS transition finished.

luda:toggle:deactivate

luda.on('luda:toggle:deactivate', '#myTarget', function(event){
  let $myTarget = this
  event.preventDefault() // Prevent the target from being deactivated if necessary.
})

Will be triggered before the .toggle-active class removed from the target.

luda:toggle:deactivated

luda.on('luda:toggle:deactivated', '#myTarget', function(event){
  let $myTarget = this
})

Will be triggered after the .toggle-active class removed from the target and CSS transition finished.