jQuery没有正确计算其父级中的元素

时间:2012-04-20 11:02:53

标签: jquery

我正在创建一个手风琴菜单,在选中所有复选框时显示下一个项目。

它适用于第一步,但一旦超过手风琴菜单中的第一项,它就不会正确计算复选框的数量。

这就是我到目前为止所提供的http://jsfiddle.net/EDYqs/ ...我已经发出警报,因此您可以看到它找到的复选框的数量。

这很难解释,因此您必须亲自了解问题所在。

2 个答案:

答案 0 :(得分:1)

只需将parent("dd")替换为parent()。

        available = $(this).parent().children('input[type=checkbox]').length;
        checked = $(this).parent().children('input[type=checkbox]:checked').length;

答案 1 :(得分:0)

您需要使用.closest()而非.parent(),因为<dd>不是复选框的直接父级(在点击处理程序中设置this的内容)。

e.g。

$('input[type=checkbox]').on('change', function(){
      available = $(this).closest('dd').find('input[type=checkbox]').length;
      checked = $(this).closest('dd').find('input[type=checkbox]:checked').length;

      // ...
});

另外,请考虑使用<label> s作为复选框文本,将for属性设置为复选框的ID(当然,您需要为每个复选框指定唯一ID) 。这允许用户单击文本以切换复选框以及屏幕阅读器等辅助功能技术,以了解该复选框的描述。