为什么jQuery将冒号放在关键字之前?

时间:2016-12-27 02:13:31

标签: javascript jquery html css

例如,我们有is(":visible")$("div").(":first")

为什么结肠在前面,它的目的是什么?

5 个答案:

答案 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的查询无法利用本机提供的性能提升DOM querySelectorAll()方法。要在使用时获得最佳性能:可见选择元素,首先使用纯CSS选择器选择元素,然后使用.filter(":visible")

答案 1 :(得分:1)

这些用于jQuery调用 选择器扩展 的内容。然而,在第二种情况下,你对它们的使用是不正确的

它们基本上是伪选择器

您可以在selector api docs here

中了解相关信息

答案 2 :(得分:1)

来自:visible

的jQuery文档
  

附加说明:

     
      
  • 因为: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匹配。