Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用按钮而不是复选框来选中jquery中的所有复选框_Jquery - Fatal编程技术网

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

使用按钮而不是复选框来选中jquery中的所有复选框,jquery,Jquery,当前,选中id为#checkall的复选框时,使用以下选项选择所有复选框 <script type="text/javascript"> $(function () { $('#checkall').click(function () { $(this).parents('fieldset:eq(0)').find(':checkbox').attr('checked', this.checked); }); }); </script>

当前,选中id为#checkall的复选框时,使用以下选项选择所有复选框

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

$(函数(){
$('#checkall')。单击(函数(){
$(this).parents('fieldset:eq(0)').find(':checkbox').attr('checked',this.checked));
});
});
如何更改此选项以允许使用按钮而不是复选框? 我试着在html中切换它们,但它似乎不起作用。

这里就是这一点

attr('checked', this.checked);
按钮没有选中的
属性

尝试使用
element.data
保存当前选中状态的值


例如,在页面初始化中设置
$('#checkall').data(“checked”,“false”)
,然后在后续调用中检查该值,并将其切换到相反的值…

您的问题是,您仍然在使用“this.checked”,按钮将永远不会被选中。您将不得不使用“切换”功能。

问题可能出在您的

, this.checked

也就是说,按钮没有选中状态

您仍然使用它。在
attr(…)
代码中选中它当然不起作用,因为它现在是一个按钮,不再是复选框。以下内容将当前“选中”状态存储在按钮的数据属性中,从而允许您像以前一样切换复选框

$('#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);
});
我做了两件事:

  • 复选框的当前状态存储在
    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);
    });
})();

给每个小组上一节课,然后

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

HTML示例将非常有用+1-这将比使用“切换”更好,因为不使用按钮就可以取消选中复选框。当您可以简单地将选中的值存储在本地可访问变量中时,为什么要使用
data()
呢?我同意J-P.data()我不知道关于.data()的约定是什么,但作为一个简单的经验法则,我使用.data()来存储与元素有关的任何数据。。存储为本地变量是可以的,但是如果您需要函数范围之外的特定变量的值,该怎么办呢。事实上,我相信这是最好的方法,不必求助于全局变量。。。
$(".yourclass").attr("checked","true");