0

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

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

这就是我迄今为止所拥有的http://jsfiddle.net/EDYqs/ ...我已经留下了警报,所以你可以看到它找到的复选框的数量。

这真的很难解释,所以你必须自己看看问题是什么。

4

2 回答 2

1

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

        available = $(this).parent().children('input[type=checkbox]').length;
        checked = $(this).parent().children('input[type=checkbox]:checked').length;
于 2012-04-20T11:07:15.070 回答
0

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

例如

$('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)。这允许用户单击文本来切换复选框,并且还允许屏幕阅读器等可访问性技术知道该复选框的描述是什么。

于 2012-04-20T11:08:08.123 回答