HTML:
<input type="checkbox" />
<span id="test">Click here</span>
JS:
$("#test").click(function () {
if ($(":checkbox").attr("checked") == undefined) {
$(":checkbox").attr("checked", "checked")
} else {
$(":checkbox").removeAttr("checked")
}
});
fiddle :Link - v1.8.3
这工作得很好,但是,如果我将 jquery 版本更改为 1.9.1,则不再选中该复选框。这是什么问题?
fiddle :Link - v.1.9.1
虽然 inspect 元素
显示复选框正在切换属性,但如果我在控制台,我得到 false
作为输出
最佳答案
checked
是一个属性,当 bool 属性如 disabled
或 checked
时,您应该使用 prop
方法设置为一个元素,该值被映射到该元素的相关 DOM 属性(浏览器执行此操作),并且 attr
和 removeAttr
方法执行此操作不更改元素的属性,从 jQuery 1.6 开始,要修改属性,应使用 prop
方法而不是 attr
。
$("#test").click(function () {
$('input[type=checkbox]').prop('checked', function(i, state){
return !state;
});
});
关于jquery - jQuery v1.9.1 的 .attr() 复选框问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15860756/