jquery children()从右到左阅读?

时间:2013-07-29 09:32:47

标签: jquery

如果在css上我们有:

#divitis>*

所以我相信,它(浏览器)将开始阅读所有元素,然后检查#divitis元素,因此,它将从正确转到

比照 Why do browsers match CSS selectors from right to left?

我的问题是:

当我们这样做时,是否有人知道children() jquery函数是否工作方式相同:

$('#divitis').children()

它会从右到左工作:

  1. 检查孩子孩子的所有元素;
  2. 检查所有孩子的元素;
  3. 检查所有儿童元素;
  4. 抓住#divitis的第一个孩子;
  5. OR,从左到右:

    1. 扫描所有元素并从#divitis中搜索;
    2. 扫描divitis的第一个孩子;
    3. 提前致谢。

2 个答案:

答案 0 :(得分:0)

.children()只会查看选择器的直接子项。 你需要的是.find(),根据我的经验,它将“按顺序”遍历DOM树,所以从“从左到右”,意思是直接的孩子,然后是孩子的孩子,等等。

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

答案 1 :(得分:0)

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

但是,因为严格遵循正常评估顺序执行两个jQuery函数调用,所以将首先评估#divitis选择器,然后评估> *

因此,这是相反的顺序,如果它只是作为包含#divitis > *的单个选择器编写的。

也就是说,浏览器转R-> L而不是L-> R的原因并不适用于此。

在应用CSS样式表时,根据每个选择器最右边的元素而不是最左边的元素,跳过不匹配CSS样式表的各个规则会更有效。

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