jQuery Child选择器语法

时间:2011-01-28 18:28:15

标签: javascript jquery

基于对控制台的一些摆弄,似乎两者是等价的:

var parent = $("p");

// option 1
var children = parent.children("a");

// option 2
var children = $("a", parent);

出于某种原因,是否优先于另一个?它们在功能上是不同的,还是仅仅是语法上的?

3 个答案:

答案 0 :(得分:3)

这些不是一回事。 children只会返回直系孩子。选项2与find类似,它将搜索上下文树的整个深度。

答案 1 :(得分:1)

它们实际上是不同的,因为

var children = parent.children("a");

只会给直系孩子,而

var children = $("a", parent);

实际上会给所有后代。后一个表达式与

完全等效
var children = parent.find("a");

documentation实际上已明确说明

  

在内部,选择器上下文是   用.find()方法实现,   所以$('span',this)相当于   $(本).find( '跨度')。

选择器上下文(运行此选择器但仅在给定的文档,元素或jQuery对象中)对于了解非常有用,但我会说它的可读性稍差。

答案 2 :(得分:0)

这两个选项并不相同。原因如下:

选项2使用selector context幕后实际使用find()

  

在内部,选择器上下文是   用.find()方法实现,   所以$('span',this)相当于   $(本).find( '跨度')。

(强调我的)

等价物是:

parent.find("a");

children()find()之间的差异如下:

  

.find()和.children()方法   是相似的,除了后者   只走一层   DOM树。