Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.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/jquery/86.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
Javascript 为什么jQuery没有选中/取消选中复选框_Javascript_Jquery_Checkbox - Fatal编程技术网

Javascript 为什么jQuery没有选中/取消选中复选框

Javascript 为什么jQuery没有选中/取消选中复选框,javascript,jquery,checkbox,Javascript,Jquery,Checkbox,当我运行下面的自包含代码时,复选框会被选中和取消选中一次,但此后它不会被选中,即使消息似乎暗示了切换 <html> <head> <title>dummy</title> <script src="http://code.jquery.com/jquery-1.10.2.js"></script> </head> <body> <input id="fc" type="checkbox" /

当我运行下面的自包含代码时,复选框会被选中和取消选中一次,但此后它不会被选中,即使消息似乎暗示了切换

<html>  
<head>
<title>dummy</title>
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<input id="fc" type="checkbox" />
<script>
function f () {
  if (typeof $("#fc").attr("checked") !== 'undefined') {
    alert("checked, unchecking");
    $("#fc").removeAttr("checked");
  } else {
    alert("unchecked, checking");
    $("#fc").attr("checked", "checked");
  }
  setTimeout(f, 1000);
}
setTimeout(f, 1000);
</script>
</body>
</html>

笨蛋
函数f(){
if(typeof$(“#fc”).attr(“选中”)!=“未定义”){
警报(“选中,取消选中”);
$(“#fc”)。移除(“选中”);
}否则{
警报(“未检查,检查”);
$(“#fc”).attr(“已检查”、“已检查”);
}
设置超时(f,1000);
}
设置超时(f,1000);
需要使用.prop()而不是.attr()来选中和取消选中复选框

$("#fc").prop("checked", true);// true to check false to uncheck
还可以使用:checked filter检查复选框是否已选中

function f () {
    if ($("#fc").is(":checked")) {
        alert("checked, unchecking");
        $("#fc").prop("checked", false);
    } else {
        alert("unchecked, checking");
        $("#fc").prop("checked", true);
    }
    setTimeout(f, 1000);
}
setTimeout(f, 1000);
上述给定样本可简化为

function f () {
    $("#fc").prop("checked", !$("#fc").is(":checked"));
}
setInterval(f, 1000);

演示:

在Firefox中进行了测试,它似乎是第一次工作,但随后它被显示为未经检查。正确,我在Chrome和Firefox@Vandesh当前位置它有很多问题。请看,
checked
属性和
checked
属性之间的一个大区别是,属性获取/设置当前值,属性获取/设置初始值(并且不会影响之后框的状态)。或者
$(“#fc”).prop(“checked”,function(i,v){return!v;})@cHao:那么为什么添加和删除属性会在第一次选中并取消选中该框?@FelixKling:不确定。在我看来,只有第一次迭代才有效,这是相当糟糕的。它要么每次都有效,要么根本不起作用。它只工作一次,这使得查找此类问题变得更加困难。@Vandesh:您是否碰巧在一段时间内尝试过这样做?它勾选一次框,取消勾选一次,然后什么都没有。看见