javascript - jQuery custom accordion, couldn't make it collapsible -


i have custom accordion, jquery ui accordion. trying make expanded item collapsible (if clicked again). this: https://jqueryui.com/accordion/#collapsible unable figure out how capture click event on expanded item. can point me right direction?

    <div class="dropdown">         <div class="style1 dropdown-link" style='background-color: rgb(75, 78, 80);'>timecard error message</div>         <div class="style2 dropdown-container" style="display: none">             <div class="externalclassa37e015771db4a43afaa85e21f07e758">                 <p>lorem ipsum dolor sit amet, consectetur adipisicing elit. aspernatur atque sapiente beatae eum repudiandae aliquam possimus delectus veritatis numquam sit eaque esse quos ipsa, pariatur omnis obcaecati quibusdam dolore magnam! </p>             </div>         </div>     </div>     <div class="dropdown">         <div class="style1 dropdown-link" style="background-color: rgb(84, 88, 90);">worklist emails</div>         <div class="style2 dropdown-container" style="display: none;">             <div class="externalclassa7d39e7bcbce48a791e0f84e3631cc00">                 lorem ipsum dolor sit amet, consectetur adipisicing elit. aspernatur atque sapiente beatae eum repudiandae aliquam possimus delectus veritatis numquam sit eaque esse quos ipsa, pariatur omnis obcaecati quibusdam dolore magnam!              </div>         </div>     </div> 

and jquery sth below:

$(document).ready(function(){      $('div.dropdown').each(function() {       var $dropdown = $(this);             $(".dropdown-link", $dropdown).click(function(e) {         e.preventdefault();         $("div.dropdown-link").css('background-image',''); //reset background css background takes on         $("div.dropdown-container").css('display','none');         $("div.dropdown-link").css('background-color','#54585a');         $("div.dropdown-link").css('border','none');           if($("div.dropdown-container", $dropdown).css('display','none')){               $("div.dropdown-link", $dropdown).css('background-color','#4b4e50');               $("div.dropdown-link", $dropdown).css({'border-bottom':'1px dotted white', 'border-top':'1px dotted white'});               $("div.dropdown-container", $dropdown).css('display','inline-block');               $("div.dropdown-link", $dropdown).css('background-image','url("/siteassets/arrowdown.png")');           }else{               $("div.dropdown-link", $dropdown).css('background-image','url("/siteassets/img/arrow.png")');               $("div.dropdown-container", $dropdown).css('display','none');               $("div.dropdown-link", $dropdown).css('background-color','#54585a');               $("div.dropdown-link", $dropdown).css('border', 'none');           }         return false;       });    }); }); 

here jsbin: http://jsbin.com/hazaxunuwa/edit?html,css,js,output

its not idea use javascript changing lot of styles while can css. should include 1 class on .dropdown when active. below sample code i've moved styles css:

$(document).ready(function(){     $('div.dropdown').each(function() {        var $dropdown = $(this);        var $dropdownlink = $dropdown.find('.dropdown-link');                 $dropdownlink.click(function(e) {          e.preventdefault();          var currentblock = $(this).closest('.dropdown');                    if(currentblock.hasclass('slide-active')) {             currentblock.removeclass('slide-active');          } else {             $('div.dropdown').removeclass('slide-active');             currentblock.addclass('slide-active');          }        });     });  });
.dropdown-link {    background: #54585a;  }  .dropdown-container {    display: none;  }    .slide-active .dropdown-container {    display: block;  }    .slide-active .dropdown-link {    border-bottom: 1px dotted white;    background: #4b4e50;  }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>  <div class="dropdown">    <div class="style1 dropdown-link">timecard error message</div>    <div class="style2 dropdown-container">      <div class="externalclassa37e015771db4a43afaa85e21f07e758">        <p>lorem ipsum dolor sit amet, consectetur adipisicing elit. aspernatur atque sapiente beatae eum repudiandae aliquam possimus delectus veritatis numquam sit eaque esse quos ipsa, pariatur omnis obcaecati quibusdam dolore magnam!        </p>      </div>    </div>  </div>  <div class="dropdown">    <div class="style1 dropdown-link">worklist emails</div>    <div class="style2 dropdown-container">      <div class="externalclassa7d39e7bcbce48a791e0f84e3631cc00">        lorem ipsum dolor sit amet, consectetur adipisicing elit. aspernatur atque sapiente beatae eum repudiandae aliquam possimus delectus veritatis numquam sit eaque esse quos ipsa, pariatur omnis obcaecati quibusdam dolore magnam!        </div>    </div>  </div>  <div class="dropdown">    <div class="style1 dropdown-link">unable enter future timecard</div>    <div class="style2 dropdown-container">      <div class="externalclassd8605e4c12364c5685331d8368e84e8a">        lorem ipsum dolor sit amet, consectetur adipisicing elit. aspernatur atque sapiente beatae eum repudiandae aliquam possimus delectus veritatis numquam sit eaque esse quos ipsa, pariatur omnis obcaecati quibusdam dolore magnam!        </div>    </div>  </div>


Comments