1

If, on css we have:

#divitis>*

So I believe, it (the browser) will start reading all elements and then, check the #divitis element, so, it will go from right to left.

cf. Why do browsers match CSS selectors from right to left?

My question is:

Does anyone knows if the children() jquery function works similarly, when we do:

$('#divitis').children()

Will it work from right to left:

  1. Check all elements child of the child of the child;
  2. Check all elements that are child of the child;
  3. Check all elements that are child;
  4. Grab the first children of #divitis;

OR, from left to right:

  1. Scan all elements and search from #divitis;
  2. Scan the first children of divitis;

Thanks in advance.

4

2 回答 2

0

在您编写 的情况下$('#divitis').children(),您实际上有两个不同的选择器,即#divitis> *

但是,由于这两个 jQuery 函数调用严格按照正常的评估顺序进行,#divitis选择器将首先被评估,然后> *.

因此,这与将其编写为包含 . 的单个选择器的顺序相反#divitis > *

也就是说,浏览器使用 R->L 而不是 L->R 的原因在这里并不适用。

应用 CSS 样式表时,基于每个选择器的最右侧元素跳过不匹配的 CSS 样式表的单个规则比在最左侧元素上更有效。

但是,在这里,您以编程方式“编写单个规则”,因此没有需要跳过的“其他规则”。

于 2013-07-29T10:14:28.893 回答
0

.children()只会查看选择器的直接子代。相反,您需要的是.find(),根据我的经验,它将“按顺序”遍历 DOM 树,因此从“左到右”,意味着首先是直接子级,然后是子级的子级,依此类推。

添加了一点 JSFiddle 进行澄清:http: //jsfiddle.net/qbG7x/

于 2013-07-29T09:55:22.090 回答