我有一个checkall脚本,通过复选框点击选中所有复选框。 目前它工作得很好,但我需要以相同的形式使用它的多个实例。所以我需要将其修改为仅定位最近的字段集。
这是工作代码,这里也是小提琴,http://jsfiddle.net/clintongreen/22w3B/
$('.checkall').click(function () {
var checked = $(this).data('checked');
$('fieldset').find(':checkbox').attr('checked', !checked);
$(this).data('checked', !checked);
});
这是我失败的尝试:
$('.checkall').click(function () {
var checked = $(this).data('checked');
var next_set = $('fieldset').next();
$(next_set).find(':checkbox').attr('checked', !checked);
$(this).data('checked', !checked);
});
答案 0 :(得分:1)
与原始尝试相比只有一行更改。
$('.checkall').click(function () {
var checked = $(this).data('checked');
$(this).parents('li').next().find(':checkbox').attr('checked', !checked);
$(this).data('checked', !checked);
});
但为什么不直接给田野工作组设置自己的ID以使其不那么脆弱呢?
答案 1 :(得分:0)
您是否查看了JQUERY中的“nearest()”函数?
答案 2 :(得分:0)
使用.parents("li").next("fieldset")
获取最近的字段集,并将其已选中的属性设置为“已选中”:
$(".checkall").click(function(){
$("input[type='checkbox']",
$(this).parents("li")
.next("fieldset"))
.attr("checked","checked");
});
答案 3 :(得分:0)
有多种方法可以做到这一点,但最简单的IMO是将“全选”复选框移动到字段集中,然后:
$('.select-all').change(function() {
var new_value = this.checked;
$(this).closest('fieldset').find('input:checkbox').each(function() {
if (!$(this).hasClass('select-all')) {
this.checked = new_value;
}
});
});