jquery - Stop Accordion Toggle when Checkbox is checked -


so have little idea of jquery. trying make piece of code working long now. don't understand problem is.

following html code:

    <ul class="accordion"> <li>    <div> <input type="checkbox" /><a href="#">administration</a></div>     <ul class="accordion">         <li>             <div><input type="checkbox" /><a href="#">president</a></div>             <ul class="accordion">                 <li>                  <div>   <input type="checkbox" /><a href="#">manager 1</a></div>                     <ul class="accordion">                         <li>                       <div>      <input type="checkbox" /><a href="#">assistant manager 1</a></div></li>                         <li>                         <div>    <input type="checkbox" /><a href="#">assistant manager 2</a></div></li>                         <li>                         <div>    <input type="checkbox" /><a href="#">assistant manager 3</a></div></li>                     </ul>                 </li>                 <li>                   <div>  <input type="checkbox" />manager 2</div></li>                 <li>                  <div>   <input type="checkbox" />manager 3</div></li>             </ul>         </li>      </ul> </li> 

following jquerycode:

$(".accordion > li > div").click(function () {  $('.active').not(this).removeclass('active').next().slideup(300);                 $(this).toggleclass('active');             if (false == $(this).next().is(':visible')) {               $('.accordion > ul').slideup(300);             }             $(this).next().slidetoggle(300);           }); $('li :checkbox').on('click', function () {    var $chk = $(this),     $li = $chk.closest('li'),     $ul, $parent;   if ($li.has('ul')) {     $li.find(':checkbox').not(this).prop('checked', this.checked);   } {     $ul = $li.parent();     $parent = $ul.siblings(':checkbox');     if ($chk.is(':checked')) {         $parent.prop('checked', $ul.has(':checkbox:not(:checked)').length == 0)     } else {         $parent.prop('checked', false)     }     $chk = $parent;     $li = $chk.closest('li'); } while ($ul.is(':not(.someclass)')); }); 

i got example fiddle clicking parent checkbox check children boxes. wanted exact same thing in accordion. accordion toggling fine,but when click parent checkbox,the entire child-accordion collapsing. want when accordion title clicked,the accordion should collapse. if checkbox checked accordion should still stay open,but child elements should checked.

any appreciated. thank you!

you can check whether click happened in input element, if don't anything

$(".accordion > li > div").click(function(e) {    if ($(e.target).is('input')) { //if clicked on input element don't      return    }    $('.active').not(this).removeclass('active').next().slideup(300);    $(this).toggleclass('active');    if (false == $(this).next().is(':visible')) {      $('.accordion > ul').slideup(300);    }    $(this).next().slidetoggle(300);  });  $('li :checkbox').on('click', function() {    var $chk = $(this),      $li = $chk.closest('li'),      $ul, $parent;    if ($li.has('ul')) {      $li.find(':checkbox').not(this).prop('checked', this.checked);        }    {      $ul = $li.parent();      $parent = $ul.siblings(':checkbox');      if ($chk.is(':checked')) {        $parent.prop('checked', $ul.has(':checkbox:not(:checked)').length == 0)      } else {        $parent.prop('checked', false)      }      $chk = $parent;      $li = $chk.closest('li');    } while ($ul.is(':not(.someclass)'));  });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>  <ul class="accordion">    <li>      <div>        <input type="checkbox" /><a href="#">administration</a>      </div>      <ul class="accordion">        <li>          <div>            <input type="checkbox" /><a href="#">president</a>          </div>          <ul class="accordion">            <li>              <div>                <input type="checkbox" /><a href="#">manager 1</a>              </div>              <ul class="accordion">                <li>                  <div>                    <input type="checkbox" /><a href="#">assistant manager 1</a>                  </div>                </li>                <li>                  <div>                    <input type="checkbox" /><a href="#">assistant manager 2</a>                  </div>                </li>                <li>                  <div>                    <input type="checkbox" /><a href="#">assistant manager 3</a>                  </div>                </li>              </ul>            </li>            <li>              <div>                <input type="checkbox" />manager 2</div>            </li>            <li>              <div>                <input type="checkbox" />manager 3</div>            </li>          </ul>        </li>        </ul>    </li>    <li>      <div>        <input type="checkbox" /><a href="#">administration</a>      </div>      <ul class="accordion">        <li>          <div>            <input type="checkbox" /><a href="#">president</a>          </div>          <ul class="accordion">            <li>              <div>                <input type="checkbox" /><a href="#">manager 1</a>              </div>              <ul class="accordion">                <li>                  <div>                    <input type="checkbox" /><a href="#">assistant manager 1</a>                  </div>                </li>                <li>                  <div>                    <input type="checkbox" /><a href="#">assistant manager 2</a>                  </div>                </li>                <li>                  <div>                    <input type="checkbox" /><a href="#">assistant manager 3</a>                  </div>                </li>              </ul>            </li>            <li>              <div>                <input type="checkbox" />manager 2</div>            </li>            <li>              <div>                <input type="checkbox" />manager 3</div>            </li>          </ul>        </li>        </ul>    </li>  </ul>


Comments

Popular posts from this blog

java - Run spring boot application error: Cannot instantiate interface org.springframework.context.ApplicationListener -

reactjs - React router and this.props.children - how to pass state to this.props.children -

Excel VBA "Microsoft Windows Common Controls 6.0 (SP6)" Location Changes -