jQuery v1.9.1的.attr()复选框问题

时间:2013-04-07 09:11:55

标签: jquery version

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作为输出

3 个答案:

答案 0 :(得分:5)

checked是一个属性,你应该使用prop方法,当一个布尔属性如disabledchecked被设置为一个元素时,该值被映射到元素的相关DOM属性(浏览器执行此操作)和attrremoveAttr方法不会更改元素的属性,因为jQuery 1.6用于修改属性,{{应使用1}}方法代替prop

attr

http://jsfiddle.net/3rQvj/

答案 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>