例如,我们有is(":visible")
或$("div").(":first")
为什么结肠在前面,它的目的是什么?
答案 0 :(得分:3)
它们是jQuery Selector Extensions,它为您提供布尔输出,它与CSS规范无关。这完全无效:
$("div").(":first")
我们使用:
$("div:first")
在jQuery中,而不是另一个。对于布尔输出,我们使用:
if ($("div").is(":first"))
if ($("div").is(":visible"))
if ($("div").is(":empty"))
以上几个例子。它也记录在那里:
由于
:visible
是 jQuery扩展且不属于CSS规范,因此使用:visible的查询无法利用本机提供的性能提升DOMquerySelectorAll()
方法。要在使用时获得最佳性能:可见选择元素,首先使用纯CSS选择器选择元素,然后使用.filter(":visible")
。
答案 1 :(得分:1)
答案 2 :(得分:1)
:visible
附加说明:
- 因为:visible是一个jQuery扩展而不是CSS规范的一部分,使用:visible的查询无法利用本机DOM querySelectorAll()方法提供的性能提升。要在使用时获得最佳性能:可见选择元素,首先使用纯CSS选择器选择元素,然后使用.filter(“:visible”)。
- 大量使用此选择器可能会影响性能,因为它可能会强制浏览器在确定可见性之前重新呈现页面。例如,使用类跟踪其他方法的元素可见性可以提供更好的性能。
对于:first
以及所有其他非纯CSS选择器,您会发现几乎相同。
这有助于我们想象您使用的选择器对jQuery选择有很大影响。正如引文中所述,它首选使用带有纯CSS选择器的前缀,以通过限制运行此选择器的元素数量来提升性能。
答案 3 :(得分:1)
在CSS中,冒号引入pseudo-class:
引入伪类概念以允许基于的选择 位于文档树之外或不可能的信息 使用其他简单的选择器表达。
伪类总是由“冒号”(:)后跟名称组成 伪类和伪括号之间的值。
例如,选择器a
会选择a
类型的所有元素,并且访问过的a:visited
会将其限制为访问过的链接。
jQuery使用一些非标准的伪类(如:first
)扩展了CSS语法,但不建议使用它们:
因为
:first
是jQuery扩展而不是CSS的一部分 规范,使用:first
的查询无法利用 本机DOM提供的性能提升querySelectorAll()
方法。使用:first
进行选择时,可获得最佳性能 元素,首先使用纯CSS选择器选择元素 使用.filter(":first")
。
答案 4 :(得分:1)
注意,jQuery伪选择器不是css
选择器。选择器表达式使用$.expr[":"]
或$.expr.createPseudo()
创建,并在内部进行解析,以便jQuery()
或Sizzle
匹配。
见