2012-04-02 72 views
6

它可以通过CSS选择器jQuery的功能,如:CSS选择器和jQuery过滤器之间的区别?

jQuery('h1 + h2'); 

jQuery的也有一定的过滤器,例如:even:odd

jQuery('tr:even'); 

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

但是,一些CSS selectors也使用:。例如:

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

没有人有知道,如果它是一个CSS选择器或一个jQuery过滤器正在使用的任何智能提示?

+0

不知道任何现有的答案如何回答这个问题... – BoltClock 2012-05-23 02:15:10

+0

@BoltClock你确定你知道你在说什么吗? ...我很困惑... – Neal 2012-05-31 13:56:44

+0

@Neal:我和你一样困惑。你在回答“是”什么?你说什么应该可以在jQuery中? – BoltClock 2012-05-31 14:00:21

回答

7

我正在寻找某种语法规则来区分这两种语法,我在想,也许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,不管有多少ulli元件有在DOM 。此选择器符号可以写为方法调用,如下所示:

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

这使得它更清晰。它不同于:first-child

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

在这种:first-child将选择每li即其父ul的第一个孩子,并且因此可以潜在地返回一个或多个li元件,而不是恰好一个与:first

另外值得一提的是:not()选择器;尽管我不认为它与上面的选择器是同一种过滤器,但重要的是要记住,jQuery将它从CSS中实际提供的内容扩展而来。差异详见this question。我想它是归类于基本过滤器,因为.not(),这是绝对的所有意图和目的过滤方法,并与.filter()的对立面。

0

是的,选择在jQuery的
存在 的选择被称为next adjacent selector

你可以看到完整的选择列表here

没有人有知道任何智能提示,如果它是一个CSS选择器或正在使用JQuery过滤器?

我的小费,检查API,如果选择存在或不...

0

jQuery选择效用函数的思想是接受任何CSS选择器(包括CSS3选择器),并且除了添加一些未在CSS规范中定义的额外值(例如:odd(例如,在有效的css中是:nth-​​child(odd))和:not(selector))。强烈建议而不是不要使用jQuery特定的选择器,除非真的需要,因为本地css选择器可以比自定义jQuery css更快地处理(在现代webbrowsers中)。正如gdoron已经提到的,如果您需要检查特定的选择器是否可用,并且您也可以在其中找到自定义选择器,则可以在jquery documentation中看到完整列表。

+0

':odd'与':nth-​​child(odd)'不一样 - 事实上,它根本没有CSS等价物。有关jQuery的':not()'与CSS3的':not()'的详细解释,请参阅http://stackoverflow.com/questions/10711730/whats-the-difference-in-the-not-selector-between- jquery-and-css – BoltClock 2012-05-31 13:48:39

+0

我的不好,我总是使用:第n个孩子(奇数)选择器,并忘记了第二个:从父母的角度来看,奇数不起作用。是的,至于:不是,我意识到这是为什么我这么说的原因:not(selector)是一个jquery扩展(as:not(singleton selector)是css的替代品),但我不想因为这个问题似乎没有要求那么深入了解这一点。 – 2012-06-01 11:32:35

相关问题