一尘不染

CSS选择器和jQuery过滤器之间的区别?

css

可以将CSS选择器传递给jQuery函数,例如:

jQuery('h1 + h2');

jQuery还具有一些过滤器,例如:even:odd

jQuery('tr:even');

我一直在寻找某种语法规则来区分两者,并且我想也许jQuery过滤器总是使用:

但是,某些CSS选择器也使用:。例如:

  • :last-child
  • :root
  • :empty
  • :target

有没有人知道您使用的是CSS选择器还是jQuery过滤器的任何智能提示?


阅读 340

收藏
2020-05-16

共1个答案

一尘不染

我一直在寻找某种语法规则来区分两者,并且我想也许jQuery过滤器总是使用:

但是,某些CSS选择器也使用:

有没有人知道您使用的是CSS选择器还是jQuery过滤器的任何智能提示?

这是关于选择器库在其自身的扩展中采用CSS语法的最烦人的事情之一:因为基于匹配的过滤器和真正的伪类都在称为“伪选择器”的总称中合并在一起(基本上意味着“选择器以:“)开头的,判断“伪选择器”是过滤器
还是
真正的简单选择器的唯一方法是知道它的作用,如果您不熟悉选择器,这通常意味着参考jQuery文档。正如其他人在这里提到的。您会注意到,大多数这些基于匹配的过滤器的描述中都会有“
match”一词。这是“伪选择器”充当基于匹配项的过滤器的合理指示。

jQuery中有一个选择器子类别,称为“基本过滤器”,但是名称完全令人误解,选择器本身分类不佳。并非所有过滤器都是实际的过滤器,但其中一些过滤器的功能类似于标准伪类!至少jQuery扩展类别具有适当的名称-因为这些选择器是非标准的。

我所说的“基于匹配的过滤器”基本上是一个选择器,它根据 导致该选择器的整个复杂选择 器来匹配元素。听起来令人困惑?那是因为。

实际上,为了便于参考,以下是用作基于匹配的过滤器的jQuery选择器的列表:

  • :eq()
  • :gt()
  • :lt()
  • :even
  • :odd
  • :first
  • :last

这些选择器返回一组匹配项中的第n个元素,这与其他标准选择器不同,其他标准选择器采用每个元素并仅基于由DOM或其​​他方式提供的有关元素的信息来推断元素的含义,以及不基于选择器字符串的其余部分。虽然它们经常比较:first- child:last-child:nth-child():nth-last-child(),他们是在功能方面完全不同。在选择使用哪个选择器时要非常小心。

例如,下面的选择器,使用jQuery的:first

$('ul > li:first')

仅匹配 一个 元素:第一个元素匹配选择ul > li的无论多少,ulli元件有在DOM。可以将这种选择器符号编写为方法调用,如下所示:

$('ul > li').first()

这使实际操作更加清晰。它不同于:first-child

$('ul > li:first-child')

这样,:first-child将选择每个元素作为li其父元素的第一个孩子ul,并因此有可能返回一个 或多个
li元素,与之恰好相反:first

还值得一提的是:not()选择器。尽管我不认为它是与上述选择器同类型的过滤器,但重要的是要记住,jQuery是从CSS实际提供的功能中扩展出来的。这个问题将详细说明差异。我想它仍然归因于“基本过滤器”.not(),这是因为,它绝对是所有过滤器方法的目的和目的,与的对立面.filter()

2020-05-16