使用JavaScript 时遇到一个问题, checkbox 用的是iCheck: $("input[name='compenent']").on('ifChecked ifUnchecked', function (event) {
        var $icheck = $(this);
        //onCheckCompenent(event, $icheck);
        var checkComp = $icheck;
       
        //var checkboxes = checkComp.find("input[name='node']");
        var checkboxes = $icheck.find('input.check');
        alert(checkboxes.length);        if (event.type == 'ifChecked') {
            checkboxes.iCheck('check');
        } else {
            checkboxes.iCheck('uncheck');
        }        checkboxes.on('ifChanged', function (event) {
            if (checkboxes.filter(':checked').length == checkboxes.length) {
                checkComp.prop('checked', 'checked');
            } else {
                checkComp.removeProp('checked');
            }
            checkComp.iCheck('update');
        });这段代码运行时发现 checkboxes.length = 0. 如何才能获取compenent 下面所有的checkbox?
为什么会这样,卡住我了。
<li>
<input type="checkbox" class="check" name="compenent" />System Component
<ul class="dropdown ">
<li>
<input type="checkbox" class="check" name="node" />CPU Info
<ul class="dropdown \">
<li>
<input type="checkbox" class="check" name="param" />Processor
</li>
</ul>
</li>
<li>
<input type="checkbox" class="check" name="node" />Memory Info
<ul class="dropdown ">
<li>
<input type="checkbox" class="check" name="param" />Memory Size
</li>
</ul>
</li>
            </ul>
</li>

解决方案 »

  1.   

    你的$icheck是input元素。input元素不可能有子元素啊。
    你要获取的是input元素下面兄弟元素ul中的子元素吧。
    $icheck.next("ul.dropdown").find('input.check');
      

  2.   

    感谢,但是我改成下面的样子,获取到的length 依旧是0  var checkboxes = $icheck.next('ul.dropdown').find('input.check');
            alert(checkboxes.length);