jQuery不再接受attr(“Checked”)=== true逻辑

时间:2012-04-19 15:19:05

标签: jquery attr

我注意到在升级到最新版本的jquery(1.7.1)后,以下代码不再评估

if( $('#item').attr('checked') === true ){
    //do something
}

我有点理解为什么他们可能会做出这样的改变,但有没有人有链接到他们为什么这样做的文件?我想确保我的代码正常工作..似乎我可能已经错误地使用了上面的代码了很长一段时间。

3 个答案:

答案 0 :(得分:4)

宁愿使用

if( $('#item').is(':checked')){
    //do something
}

答案 1 :(得分:4)

使用.is检查是否选中了复选框。见下文,

if( $('#item').is(':checked')){
..

修改

据我所知,jQuery的$('#item').attr('checked')从未返回true。它返回checkedundefined

凯文指出,

  1.6之后

.attr('checked')正确返回一个字符串(所有属性   是字符串)。如果你想要一个布尔属性,使用新的.prop()   方法

如果您想比较true,请使用this.checked。请参阅下文< - 我更喜欢使用this.checked,因为这比任何其他方法都快。

if (this.checked === true) {
..

使用.prop,如下所示,DEMO

if($(this).prop('checked') === true) {
..

DEMO

答案 2 :(得分:1)

它不起作用,因为每个浏览器都有自己的方式来检查它,例如:

checked,checked =“checked”,checked =“true”。

所以你应该使用selector:checked属性的intead。并且jQuery将关注所有浏览器:)