jQuery语法选择器,这些是完全相同的东西吗?

时间:2009-11-30 12:29:31

标签: jquery jquery-selectors

我对选择语法有一些偏好,例如:

 $('#mydiv > a.selectMe').hide();
 $('#mydiv').children('a.selectMe').hide();

对我而言,似乎有点令人困惑,因为jQuery的文档在这里有点含糊不清:

” 父母> child返回:数组 匹配由“parent”指定的元素“child”指定的所有子元素。 “

” children(expr)返回:jQuery 获取一组元素,其中包含每个匹配元素集的所有唯一直接子元素。 “

在我的脑海中需要澄清的问题是,第一种形式是返回所有的孩子/孙子,还是只是直接的孩子,因为第二种形式表明是真的。 其中一个是“选择器”形式,另一个是jQuery文档页面上的“遍历”,对我来说这是类似的功能任务,但不完全相同。

所以这里的问题是:
哪种形式更快? 他们真的选择相同的东西,或'父母>孩子的形式选择了大孩子以及直系孩子吗?

1 个答案:

答案 0 :(得分:1)

$('#mydiv a.selectMe') - 查找具有“selectMe”类的所有锚点,这些锚点是ID为“mydiv”的标记的后代。这些可以深深嵌套。

$('#mydiv> a.selectMe') - 找到直接的孩子。

至于你的两个直接孩子的例子之间哪个更快...我做了一些时间试验来测试。

我有一个带有10,000个锚标签的页面,其中包含“selectMe”类,在ID为'mydiv'的Div中。

$("#mydiv").children("a.selectMe") - 485ms
$("#mydiv > a.selectMe") - 374ms

基本上,尽管使用选择器执行所有操作的速度始终更快,但这种差异可以忽略不计。如果你在一个页面上有10k锚点,那么你面临着一个完全不同的问题。 : - )