我正在创建一个手风琴菜单,在选中所有复选框时显示下一个项目。
它适用于第一步,但一旦超过手风琴菜单中的第一项,它就不会正确计算复选框的数量。
这就是我到目前为止所提供的http://jsfiddle.net/EDYqs/ ...我已经发出警报,因此您可以看到它找到的复选框的数量。
这很难解释,因此您必须亲自了解问题所在。
答案 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) 。这允许用户单击文本以切换复选框以及屏幕阅读器等辅助功能技术,以了解该复选框的描述。