我正在寻找某种语法规则来区分这两种语法,我在想,也许jQuery过滤器总是使用:
。
但是,一些CSS选择器也使用:
。
没有人有知道,如果它是一个CSS选择器或一个jQuery过滤器正在使用的任何智能提示?
这是有关采用自己的扩展中的CSS语法选择库最讨厌的事情之一:因为这两个基于匹配的过滤器和真正的伪类是被称为“伪选择”的总称混为一谈(这基本上意味着“以:
开始的选择器”),判断“伪选择器”是否是过滤器或的唯一方法是真正简单的选择器是知道它的作用,如果你不熟悉选择器通常指的是指其他人在此提到的jQuery documentation。您会注意到,大多数基于匹配的过滤器在其描述中都会有“匹配”一词;这是一个合理的指标,即“伪选择器”用作基于匹配的过滤器。
在jQuery中有一个名为Basic Filters的选择器的子类别,但名称完全是误导性的,而选择器本身分类很差;不是所有的都是实际的过滤器,但其中一些功能像标准伪类一样!至少jQuery Extensions类别有一个正确的名称 - 因为这些选择器是非标准的。
我称之为“基于匹配的过滤器”基本上是一个选择器,它匹配基于的整个复杂选择器前导向该选择器的元素。声音混乱?那是因为它。
事实上,为便于参考起见,这里要说的是作为基于匹配的过滤器工作jQuery选择列表:
这些选择返回第n个元素(S)一组的比赛中,与内搭的每个元素,使的它完全基于有关信息扣除的其他标准选择该元素由DOM或其他提供,而不是基于选择器字符串的其余部分。尽管它们经常与:first-child
,:last-child
,:nth-child()
和:nth-last-child()
进行比较,但它们在功能方面有很大不同。在选择使用哪个选择器时要非常小心。
例如,下面选择器,使用jQuery的:first
:
$('ul > li:first')
相配仅一个元件:所述第一元件匹配选择ul > li
,不管有多少ul
和li
元件有在DOM 。此选择器符号可以写为方法调用,如下所示:
$('ul > li').first()
这使得它更清晰。它不同于:first-child
:
$('ul > li:first-child')
在这种:first-child
将选择每li
即其父ul
的第一个孩子,并且因此可以潜在地返回一个或多个li
元件,而不是恰好一个与:first
。
另外值得一提的是:not()
选择器;尽管我不认为它与上面的选择器是同一种过滤器,但重要的是要记住,jQuery将它从CSS中实际提供的内容扩展而来。差异详见this question。我想它是归类于基本过滤器,因为.not()
,这是绝对的所有意图和目的过滤方法,并与.filter()
的对立面。
不知道任何现有的答案如何回答这个问题... – BoltClock 2012-05-23 02:15:10
@BoltClock你确定你知道你在说什么吗? ...我很困惑... – Neal 2012-05-31 13:56:44
@Neal:我和你一样困惑。你在回答“是”什么?你说什么应该可以在jQuery中? – BoltClock 2012-05-31 14:00:21