最近谢了个效果,里面用到
if( !this.checked ) {
}
这个语句,我把它换成这样:
if( $(this).is(':checked') ) {
}
怎么效果就出不来了呢?
这两个语句不是等价的吗?
is(expr) 返回值:Boolean
用一个表达式来检查当前选择的元素集合,如果其中至少有一个元素符合这个给定的表达式就返回true。
如果没有元素符合,或者表达式无效,都返回'false'。
if( !this.checked ) {
}
这个语句,我把它换成这样:
if( $(this).is(':checked') ) {
}
从结果上来分析,就是this到底是什么?如果只是一个checkbox,则是一样的.但是,你说效果不执行了,那么很有可能this指向一个集合.所以$(this).is(':checked')返回true,而this.checked返回undefinded;那么:
!this.checked 的值是true
!$(this).is(':checked') 的值是false
反了吧?第一个是判断没选中,第二个是判断选中
$(this).is(':checked')应该等同于以下表达式:
[code="java"]
this.checked === true
[/code]