0

我有一个 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);
});
4

4 回答 4

1

与您最初的尝试相比,只需一行更改。

$('.checkall').click(function () {
    var checked = $(this).data('checked');
    $(this).parents('li').next().find(':checkbox').attr('checked', !checked);
    $(this).data('checked', !checked);
});

但是为什么不给字段集自己的 ID 以使其不那么脆弱呢?

于 2012-05-04T00:35:13.063 回答
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;
    }
  });
});
于 2012-05-04T00:31:26.473 回答
0

您是否查看过 JQUERY 中的“closest()”函数?

http://api.jquery.com/closest/

于 2012-05-04T00:29:09.363 回答
0

获取最接近.parents("li").next("fieldset")的字段集并将其选中属性设置为“已选中”:

$(".checkall").click(function(){
    $("input[type='checkbox']",
        $(this).parents("li")
               .next("fieldset"))
    .attr("checked","checked");
});
于 2012-05-04T00:29:35.720 回答