首页 > 解决方案 > “重复” jQuery 伪类选择器的目的是什么?

问题描述

使用伪类选择器

$( "input:password" )

似乎是等效但可能较慢的版本

$( 'input[type="password"]' )

(速度较慢,因为,如链接的文档中所述,“:password是 jQuery 扩展而不是 CSS 规范的一部分,因此使用查询:password无法利用本机 DOMquerySelectorAll()方法提供的性能提升。”)

这就产生了一个问题:这个伪类选择器的存在有明确的原因吗?它提供了哪些潜在优势(如果有的话)?在什么情况下行为会有所不同?

标签: javascriptjqueryperformance

解决方案


:password实际上只在 jQuery API 中用于对称/完整性,因为它与[type=password].

:text不只是与 相同[type=text],因为它还匹配input没有type属性的元素(因此被浏览器视为type="text")。[type=text]不会那样做。你必须使用input[type=text]组合 with input:not([type])

同样,:button不只是input[type=button],它也匹配button元素。

同样,:input不仅仅是 的同义词input,它还匹配inputtextareaselectbutton元素。

所以在一般情况下,它们的目的是帮助程序员不要忘记包含他们可能想要包含的东西(比如input没有 a 的元素type)和/或简洁性。

循环回到:password,它只是为了对称。


推荐阅读