基于对控制台的一些摆弄,似乎两者是等价的:
var parent = $("p");
// option 1
var children = parent.children("a");
// option 2
var children = $("a", parent);
出于某种原因,是否优先于另一个?它们在功能上是不同的,还是仅仅是语法上的?
答案 0 :(得分:3)
答案 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树。