我在 LI 和 SPAN 中有一个无序列表的复选框。当按下 UL 上方的按钮时,如何检查下表中的所有框?我已经尝试了几个这样的变体,但没有成功:
$(this).closest('ul').find('input[type=checkbox]').prop('checked', this.checked);
更新了我的答案
下一个();就是你要找的。
var $elements = $('input#afterthis').closest('li').nextAll().find('input[type="checkbox"]');
$elements.attr('checked', 'checked');
$('body').append('There are ' + $elements.length + ' elements checked');
示例:http: //jsfiddle.net/qwRSW/3/
如果按钮是 的兄弟<ul>
:
$('.myButton').click(function(){
$(this).next('ul').find('input[type=checkbox]').prop('checked', true);
});
所以 HTML 看起来像:
<input type="button" class="myButton" value="Check all" />
<ul>
....
</ul>
这种方法允许你有很多<ul>
's,每个都由他们自己的按钮控制。只需重复 HTML,无需更改 jQuery。