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")
}
});
小提琴:Link - v1.8.3
这很好用,但是,如果我将jquery版本更改为1.9.1,则不再检查该复选框。有什么问题?
小提琴:Link - v.1.9.1
虽然inspect element
显示复选框正在切换属性,但如果我在控制台中执行$(":checkbox").is(":checked")
,则会将false
作为输出
答案 0 :(得分:5)
checked
是一个属性,你应该使用prop
方法,当一个布尔属性如disabled
或checked
被设置为一个元素时,该值被映射到元素的相关DOM属性(浏览器执行此操作)和attr
和removeAttr
方法不会更改元素的属性,因为jQuery 1.6用于修改属性,{{应使用1}}方法代替prop
。
attr
答案 1 :(得分:1)
我也遇到了同样的问题,你应该参考下面的链接来获得正确的想法 http://jquery.com/upgrade-guide/1.9/#attr-versus-prop- 希望它能解决你的问题:)
答案 2 :(得分:0)
为什么不使用标签?这样它就可以在没有javascript的情况下工作。
<input type="checkbox" id="test" /><label for="test">Click me</label>