bloqhead
10/28/2015 - 2:15 PM

Toggles corresponding content containers based on data attributes. Requires jQuery.

Toggles corresponding content containers based on data attributes. Requires jQuery.

# The Panel Toggler
panelToggler = ( $parent, $child ) ->
  $($parent).on 'click', $child, ->
    dataLink = $(@).data 'link'
    dataTarget = $('[data-target="' + dataLink + '"]')
    notTarget = $('[data-target]').filter(->
      $(@).data 'target' isnt dataLink
    )
    $(@).toggleClass 'active'
    $(@).siblings().removeClass 'active'
    dataTarget.toggle()
    dataTarget.toggleClass 'active-target'
    notTarget.hide()
 
# Put it to use
panelToggler '#menu', 'li'
<style>
  [data-target] {
    display: none;
  }
</style>

<nav>
  <ul id="menu">
    <li data-link="panel-1">Panel One</li>
    <li data-link="panel-2">Panel Two</li>
    <li data-link="panel-3">Panel Three</li>
  </ul>
</nav>

<section>
  <div data-target="panel-1">
    <p>Your panel 1 content here.</p>
  </div>
  <div data-target="panel-2">
    <p>Your panel 2 content here.</p>
  </div>
  <div data-target="panel-3">
    <p>Your panel 3 content here.</p>
  </div>
</section>