我正在创建一个手风琴菜单,当所有复选框都被选中时,它会显示下一个项目。
它适用于第一步,但一旦超过手风琴菜单中的第一项,它就不会正确计算复选框的数量。
这就是我迄今为止所拥有的http://jsfiddle.net/EDYqs/ ...我已经留下了警报,所以你可以看到它找到的复选框的数量。
这真的很难解释,所以你必须自己看看问题是什么。
我正在创建一个手风琴菜单,当所有复选框都被选中时,它会显示下一个项目。
它适用于第一步,但一旦超过手风琴菜单中的第一项,它就不会正确计算复选框的数量。
这就是我迄今为止所拥有的http://jsfiddle.net/EDYqs/ ...我已经留下了警报,所以你可以看到它找到的复选框的数量。
这真的很难解释,所以你必须自己看看问题是什么。
只需替换parent("dd")
为父()。
available = $(this).parent().children('input[type=checkbox]').length;
checked = $(this).parent().children('input[type=checkbox]:checked').length;
您需要使用.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)。这允许用户单击文本来切换复选框,并且还允许屏幕阅读器等可访问性技术知道该复选框的描述是什么。