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:您是否碰巧在一段时间内尝试过这样做?它勾选一次框,取消勾选一次,然后什么都没有。看见