哪种方法可以更好地检查元素? .is\':checked\'或.prop\'checked\'

问题描述

|
.is(\':checked\')
.prop(\'checked\')
均可用于测试是否选中了一个复选框。 这两种查询检查状态的方法之间是否有有趣/重要的区别,还是仅是个人喜好问题?     

解决方法

        他们最终都检查同一件事。 如果您使用的是1.6.0或更高版本,则
prop(\'checked\')
是最直接的jQuery方式。 jQuery不必解析和处理选择器即可确定要做什么。[注意以下] 您也可以(从1.6.1版本开始)在1.5.x及更早版本中再次使用
attr(\'checked\')
。 或者,您可以直接转到该元素。假设要测试的是“ 4”,如果您知道至少有一个元素匹配,那么:
if (x[0].checked) { /* ... */ }
如果您不确定并希望对冲您的赌注:
if (x[0] && x[0].checked) { /* ... */ }
但是除非您处于一个非常紧密的循环中,否则请使用您认为最容易阅读的内容,因为性能差异无关紧要。我发现最后一个非常容易阅读,并且我知道它们非常快,所以我使用它们。但是,如果您觉得它们很尴尬,请使用最喜欢的方法。如果您喜欢
is(\':checked\')
并且没有看到实际的性能影响,则使用它没有什么害处(这不太可能再次出现某种紧密循环)。 注意:
prop
比direct9ѭ更直接的程度因浏览器而异。
prop
不仅是对属性的直接检查,而且确实会先经过几个间接级别; ѭ9并不一定很复杂:例如,在WebKit浏览器中,ѭ9可以相当直接,因为WebKit提供了一个测试元素是否与选择器匹配的功能,并原生支持ѭ13。在Firefox(我怀疑是IE)上,使用ѭ9会导致大量函数调用,因为这个看似简单的选择器在Sizzle的内部发挥了作用。     ,        我会自己使用
prop(\'checked\')
(只要我不必支持旧的jQuery版本),因为它直接访问对象的
checked
属性,并且易于阅读。 string7ѭ在进行字符串解析等操作时会产生一些额外的开销。在选择元素时,我通常会保留
:checked
。     ,        需要注意的一件事是,“ 1”仅确定是否选中了集合中的第一个复选框,而如果选中了集合中的至少一个复选框,则“ 0”将返回true。 因此,如果您试图确定是否已选中集合中的任何复选框,则可能会认为使用
is(\':checked\')
更容易。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...