3

I've noticed that after a upgrade to the latest version of jquery (1.7.1) that the following code no longer evalulates

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

I sort of understand why they may have made this change but does anyone have a link to documentation of why they have done this? I want to ensure my code works correctly.. and it seems that maybe I have been incorrectly using the above for quite a while.

4

3 回答 3

4

宁可使用

if( $('#item').is(':checked')){
    //do something
}
于 2012-04-19T15:20:12.163 回答
4

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

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

编辑:

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

正如凯文指出的那样,

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

如果要比较true,请使用this.checked. 见下文,<-- 我更喜欢使用this.checked它,因为它比任何其他方法都快。

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

或者

.prop像下面这样使用, DEMO

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

演示

于 2012-04-19T15:20:20.027 回答
1

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

检查,检查=“检查”,检查=“真”。

所以你应该使用选择器 :checked 而不是属性。和 jQuery 会照顾所有的浏览器 :)

于 2012-04-19T15:23:25.353 回答