javascript - “重复” jQuery 伪类选择器的目的是什么?
问题描述
使用伪类选择器
$( "input:password" )
似乎是等效但可能较慢的版本
$( 'input[type="password"]' )
(速度较慢,因为,如链接的文档中所述,“:password
是 jQuery 扩展而不是 CSS 规范的一部分,因此使用查询:password
无法利用本机 DOMquerySelectorAll()
方法提供的性能提升。”)
这就产生了一个问题:这个伪类选择器的存在有明确的原因吗?它提供了哪些潜在优势(如果有的话)?在什么情况下行为会有所不同?
解决方案
: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
,它还匹配input
、textarea
、select
和button
元素。
所以在一般情况下,它们的目的是帮助程序员不要忘记包含他们可能想要包含的东西(比如input
没有 a 的元素type
)和/或简洁性。
循环回到:password
,它只是为了对称。
推荐阅读
- sql - SSIS 固定宽度文本文件 - 参考表和附录
- react-native - 尝试使用抽屉导航时发出警告
- powershell - 带有 kubectl 的 jsonpath 以获取“app.kuberentes.io/version”值
- python - Python For 循环的另一种更快的方法
- javascript - Vue.js - 无法将 this.$route.params.id 存储在数据属性的变量中?
- java - 初始化引导层 java.nio.file.InvalidPathException 时出错:非法字符
- python - 如何从主产品价格调整子产品价格?
- pyspark - 如何添加到运行 PySpark 会话的类路径
- php - 可能的 file_put_contents 冲突?
- devextreme - Angular Devex DataGrid - 基于另一个值启用/禁用单元格