Javascript 选中/取消选中所有子复选框jquery引导

Javascript 选中/取消选中所有子复选框jquery引导,javascript,jquery,twitter-bootstrap,Javascript,Jquery,Twitter Bootstrap,关于这个fiddle(),我有与这个fiddle相同的功能,即选中/取消选中所有子复选框,它现在运行良好 但是,当我在我的表单和在bootstrap下创建的表单中使用此脚本时,它会将其他DIV和SPAN添加到复选框中,并且此小提琴脚本对bootstrap复选框不起更多作用。`请帮助我选中/取消选中所有子框 $('li:checkbox')。在('click',函数(){ var$chk=$(此), $li=$chk.closest('li'), $ul$家长; 如果($li.has('ul')

关于这个fiddle(),我有与这个fiddle相同的功能,即选中/取消选中所有子复选框,它现在运行良好

但是,当我在我的表单和在bootstrap下创建的表单中使用此脚本时,它会将其他DIVSPAN添加到复选框中,并且此小提琴脚本对bootstrap复选框不起更多作用。`请帮助我选中/取消选中所有子框

$('li:checkbox')。在('click',函数(){
var$chk=$(此),
$li=$chk.closest('li'),
$ul$家长;
如果($li.has('ul')){
$li.find(“:checkbox”).not(this.prop('checked',this.checked)
}
做{
$ul=$li.parent();
$parent=$ul.sibbines(':checkbox');
如果($chk.is(':checked')){
$parent.prop('checked',$ul.has(':复选框:未(:checked))。长度==0)
}否则{
$parent.prop('checked',false)
}
$chk=$parent;
$li=$chk.closest('li');
}而($ul.is(':not(.someclass));
});$('li:checkbox')。在('click',函数(){
var$chk=$(此),
$li=$chk.closest('li'),
$ul$家长;
如果($li.has('ul')){
$li.find(“:checkbox”).not(this.prop('checked',this.checked)
}
做{
$ul=$li.parent();
$parent=$ul.sibbines(':checkbox');
如果($chk.is(':checked')){
$parent.prop('checked',$ul.has(':复选框:未(:checked))。长度==0)
}否则{
$parent.prop('checked',false)
}
$chk=$parent;
$li=$chk.closest('li');
}而($ul.is(':not(.someclass));
});
  • 管理
    • 主席:
      • 经理1
        • 助理经理1
        • 助理经理2
        • 助理经理3
      • 经理2
      • 经理3
    • 副总裁
      • 经理4
      • 经理5
      • 经理6

您的引导版本不起作用,因为
复选框
项相对于用于搜索项的
ul
元素(
$ul=$li.parent();
)位于不同的位置。您的引导版本:

  <div class="checker"> 
      <span class="checked">
          <input type="checkbox">
       </span>
  </div>President
  <ul>...
 do {
    $ul = $li.parent();
    //$parent = $ul.siblings(':checkbox'); old code
    $parent = $ul.siblings('.checker');
    if ($chk.is(':checked')) {
        $parent.find(':checkbox').prop('checked', $ul.has(':checkbox:not(:checked)').length == 0)
    } else {
        $parent.find(':checkbox').prop('checked', false)
    }
    $chk = $parent;
    $li = $chk.closest('li');
} while ($ul.is(':not(.someclass)')); 
有关工作样本,请访问

顺便说一句,您最初的Fiddle示例代码很酷,它以很酷的方式使用递归循环来获取父元素:-)

 do {
    $ul = $li.parent();
    //$parent = $ul.siblings(':checkbox'); old code
    $parent = $ul.siblings('.checker');
    if ($chk.is(':checked')) {
        $parent.find(':checkbox').prop('checked', $ul.has(':checkbox:not(:checked)').length == 0)
    } else {
        $parent.find(':checkbox').prop('checked', false)
    }
    $chk = $parent;
    $li = $chk.closest('li');
} while ($ul.is(':not(.someclass)'));