elem.is(':checked') vs elem.prop('checked')

7

正如标题所说,elem.is(':checked')elem.prop('checked')有什么区别。

我个人使用elem.is(':checked'),因为函数is说明我将返回布尔值。

我应该在何时选择其中之一以及为什么?


它们是别名。使用最适合的那个。 - Justinas
2个回答

4
基于这个SO问题,如果您使用1.6.0或更高版本,则prop('checked')是最直接的jQuery方式。jQuery不必解析和处理选择器以确定要执行的操作。
请注意:与is相比,prop更为直接的程度因浏览器而异。prop不仅仅是属性的直接检查,它首先经过了几个间接层次的处理;并且它不一定非常复杂:例如,在WebKit浏览器上,它可以相当直接,因为WebKit提供了一个函数来测试元素是否与选择器匹配,并原生支持:checked; 在Firefox(以及我猜测的IE)上,is会导致大量的函数调用,因为这个看似简单的选择器要通过Sizzle的内部结构来实现。
测试结果: jQuery prop('checked') vs. is(':checked')

1

.prop 用于获取/设置元素的属性值。传递一个参数时,它将返回属性(第一个参数)的值;传递两个参数时,它将把第二个参数设置为第一个参数(元素属性)的值。

因此,elem.prop('checked') 将返回 checked 属性的值。根据属性,值的数据类型可以是任何类型(布尔型/字符串型)。

如果你检查 elem.prop('type'),这将返回 type 属性的值,它是一个字符串数据类型,并将输出 checkbox

.is 用于检查元素是否符合传递的条件,如果成立则返回 true/false。因此,数据类型始终为布尔型(true/false)。

因此,您可以使用 elem.is(':checked') 检查元素是否被选中。这里,:checked 被称为伪元素,用于检查元素的状态(选中/未选中)。
您还可以使用 elem.is('[type="checkbox"]') 检查元素是否为复选框。在这里,[type="checkbox"] 用于检查元素的属性类型是不是 checkbox

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接