javascript - Setting up disclosure triangles for Bootstrap 3 accordion -


i pretty frustrate bootstrap 3 accordion control doesn't seem have built-n class toggle open/close on heading of accordion.

i need have accordion 1 css class on header when child open, , closed. i'm close following code, doesn't cover situation when user closes , opened pane without choosing different pane -- works right if keep choosing different panes.

the 3 things need headers correctly show state:

  • when pane set opened default (add "in" class html of pane)
  • when manually opened or closed, show right class
  • when closed clicking different pane open

i far have

    $(function() {    $('h4.panel-title').each(function() {         // check headers see if have open children         var isopen = $(this).closest('.panel').find('.panel-collapse').hasclass('in');         // and, if yes, set class "open"         if (isopen) {             $(this).addclass('open');         }    });    $('h4.panel-title').on('click', function(event) {         // remove "open" class headers in group         $(this).closest('.accordion-group').find('h4.panel-title').removeclass('open');         // set 1 clicked on open         $(this).addclass('open');    }); 

with html:

<div class="panel-group accordion-group" id="accordion">       <div class="panel panel-default">         <div class="panel-heading">           <h4 class="panel-title">             <a data-toggle="collapse" data-parent="#accordion" data-target="#collapseone">               collapsible group item #1             </a>           </h4>         </div>         <div id="collapseone" class="panel-collapse collapse in">           <div class="panel-body">             text...           </div>         </div>       </div>       <div class="panel panel-default">         <div class="panel-heading">           <h4 class="panel-title">             <a data-toggle="collapse" data-parent="#accordion" data-target="#collapsetwo">               collapsible group item #2             </a>           </h4>         </div>         <div id="collapsetwo" class="panel-collapse collapse">           <div class="panel-body">             text...           </div>         </div>       </div>       <div class="panel panel-default">         <div class="panel-heading">           <h4 class="panel-title">             <a data-toggle="collapse" data-parent="#accordion" data-target="#collapsethree">               collapsible group item #3             </a>           </h4>         </div>         <div id="collapsethree" class="panel-collapse collapse">           <div class="panel-body">             text...           </div>         </div>       </div>     </div> 

it didn't survive being pasted fiddle, here is: http://jsfiddle.net/smlombardi/kw33s/

try this,

$(function() {        $('h4.panel-title').on('click', function(event) {            // remove "open" class headers in group            $(this).closest('.accordion-group').find('h4.panel-title').removeclass('open');            // remove "in" class collapse panel            $(this).closest('.accordion-group').find('.collapse').removeclass("in");            // set 1 clicked on open            $(this).addclass('open');            $(this).parent().next(".collapse").addclass("in");    }); }); 

jsfiddle


Comments

Popular posts from this blog

c++ - OpenCV Error: Assertion failed <scn == 3 ::scn == 4> in unknown function, -

php - render data via PDO::FETCH_FUNC vs loop -

The canvas has been tainted by cross-origin data in chrome only -