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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.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
选中/取消选中w/jQuery_Jquery - Fatal编程技术网

选中/取消选中w/jQuery

选中/取消选中w/jQuery,jquery,Jquery,我有以下功能,通过选择一个复选框来选中/取消选中页面上的所有复选框 $("#checkall").click(function() { var checked_status = this.checked; $("input:checkbox").each(function() { this.checked = checked_status; }); }); 我需要以这样一种方式修改它:如果通过单击checkall选中所有,然后取消选中一个,那么#chec

我有以下功能,通过选择一个复选框来选中/取消选中页面上的所有复选框

$("#checkall").click(function() {
    var checked_status = this.checked;
    $("input:checkbox").each(function() {
        this.checked = checked_status;
    });
});
我需要以这样一种方式修改它:如果通过单击checkall选中所有,然后取消选中一个,那么#checkall也将取消选中。或者我需要为此创建一个单独的函数吗

此外,当没有选中任何复选框时,我需要向另一个元素添加一个类

$("#myElement").addClass("disabled");
把这一切放在一起对我来说有点复杂

var checked_status = false;
$("#checkall").click(function() {
checked_status = this.checked;
$("input:checkbox").each(function() {
    this.checked = checked_status;
});
});
$("input:checkbox").click(function(){
   if(checked_status == true) {
       $('#checkall').checked = false;
   }
});

测试

从@Toukakoukan窃取的一些想法

测试


从@Toukakoukan偷来的一些想法

我会使用change event

这就是你想要的吗

<div class="checkall">
    <input type="checkbox" id="checkall">
</div>
<div id="list">
    <input type="checkbox" />
    <input type="checkbox" />
    <input type="checkbox" />
    <input type="checkbox" />
    <input type="checkbox" />
</div>
演示(如果您使用的是jquery 1.6+:


在此链接中添加了#MyElement类切换:

我将使用更改事件

这就是你想要的吗

<div class="checkall">
    <input type="checkbox" id="checkall">
</div>
<div id="list">
    <input type="checkbox" />
    <input type="checkbox" />
    <input type="checkbox" />
    <input type="checkbox" />
    <input type="checkbox" />
</div>
演示(如果您使用的是jquery 1.6+:


在该链接中添加了#MyElement类切换:

是,只需在每个复选框上添加一个事件。此外,在上面的代码中,each循环是不必要的。是的,只需在每个复选框上放置一个事件。此外,在上面的代码中,每个循环都是不必要的。@Santa-如果您在复选框中放置一个类,那么您可以使用更简单的代码来实现这一点(因此您不必使用选中的.not()来排除复选框)@Santa-如果您在复选框中放置一个类,那么您可以使用更简单的代码来实现这一点(因此您不必使用.not()选择此选项可排除复选框)如果im没有误取1.6中的道具,但如果您正在运行较旧版本,则只需将.prop更改为.attr insteead.+1以使用
更改
事件。单击复选框并不是选中它的唯一方法。酷。顺便问一下,我如何检测何时未选中任何一个(问题结束)?我已选中复选框集合并比较选中的复选框,如果两个集合的长度相同,则自动选中“全选”复选框。如果选中了所有复选框,我就添加了MyLeemnt切换类。如果你在页面加载上检查了一些内容,你可能还想在页面加载上触发更改事件。听起来voigtan的答案是公认的(使用更改的荣誉),但关于检测是否所有内容都已检查,我的答案是oh nvm,然后XDIf im not Misstake道具出现在1.6中,但是如果您运行的是较旧的版本,只需将.prop更改为.attr insteead.+1即可使用
change
事件。单击复选框并不是选中它的唯一方法。酷。顺便问一下,我如何检测何时未选中任何一个(问题结束)?我已选中复选框集合并比较选中的复选框,如果两个集合的长度相同,则自动选中“全选”复选框。如果选中了所有复选框,我就添加了MyLeemnt切换类。如果你在页面加载上检查了一些内容,你可能还想在页面加载上触发更改事件。听起来voigtan的答案是公认的(使用更改的荣誉),但关于检测是否所有内容都被检查,我的答案是oh nvm然后XD
<div class="checkall">
    <input type="checkbox" id="checkall">
</div>
<div id="list">
    <input type="checkbox" />
    <input type="checkbox" />
    <input type="checkbox" />
    <input type="checkbox" />
    <input type="checkbox" />
</div>
var checkboxes = $(":checkbox", "#list").change(function() {
        var allIsChecked = checkboxes.length === checkboxes.filter(":checked").length;

        checkAll[0].checked = allIsChecked;
});

var checkAll = $("#checkall").change(function() {
        checkboxes.prop("checked",this.checked);
});