使用按钮而不是复选框来检查jquery中的所有复选框

时间:2009-12-18 14:02:59

标签: jquery

当选中ID为#checkall的复选框时,目前使用以下选项选中所有复选框。

<script type="text/javascript">
$(function () {
    $('#checkall').click(function () {
        $(this).parents('fieldset:eq(0)').find(':checkbox').attr('checked', this.checked);
    });
});
</script>

如何更改此设置以允许使用按钮而不是复选框? 我试过在html中将它们切换出来,但它似乎没有用。

6 个答案:

答案 0 :(得分:2)

这就是这里的

attr('checked', this.checked);

按钮没有checked属性

尝试使用element.data来保存当前检查状态的值

例如,在页面初始化时设置$('#checkall').data("checked","false"),然后在后续调用中检查该值是什么,并将其切换为相反的...

答案 1 :(得分:0)

你的问题是你还在使用“this.checked”,永远不会检查按钮。您必须使用“切换”功能。

答案 2 :(得分:0)

问题可能在你的

, this.checked

即。按钮没有检查状态

答案 3 :(得分:0)

你仍然在attr(...)代码中使用this.checked,这当然不会起作用,因为现在这是一个按钮,而不再是一个复选框。以下内容将当前“已检查”状态存储在按钮的数据属性中,因此您可以像以前一样切换复选框

$('#checkall').click(function () {
    var ele = $(this);
    var checked = ele.data("checked");
    checked = checked == undefined ? true : checked;
    $(this)
        .data("checked", !checked)
        .parents('fieldset:eq(0)')
        .find(':checkbox')
        .attr('checked', checked);
});

答案 4 :(得分:0)

var checked = false;
var checkAll = $('#checkall');
var checkboxes = checkAll.parents('fieldset:eq(0)').find(':checkbox');

checkAll.click(function () {
    checkboxes.attr('checked', checked = !checked);
});

我做了两件事:

  • 复选框的当前状态存储在checked变量中。
  • 每次点击都不会查看复选框;相反,我们缓存集合,并在单击checkAll按钮时设置属性。

而且,如果您担心全局变量,那么只需将其全部包含在自己的范围内:

(function(){
    var checked = false;
    var checkAll = $('#checkall');
    var checkboxes = checkAll.parents('fieldset:eq(0)').find(':checkbox');

    checkAll.click(function () {
        checkboxes.attr('checked', checked = !checked);
    });
})();

答案 5 :(得分:0)

给每个小组一个特定的班级,然后做

$(".yourclass").attr("checked","true");