我对选择语法有一些偏好,例如:
$('#mydiv > a.selectMe').hide();
$('#mydiv').children('a.selectMe').hide();
对我而言,似乎有点令人困惑,因为jQuery的文档在这里有点含糊不清:
” 父母> child返回:数组 匹配由“parent”指定的元素“child”指定的所有子元素。 “
和
” children(expr)返回:jQuery 获取一组元素,其中包含每个匹配元素集的所有唯一直接子元素。 “
在我的脑海中需要澄清的问题是,第一种形式是返回所有的孩子/孙子,还是只是直接的孩子,因为第二种形式表明是真的。 其中一个是“选择器”形式,另一个是jQuery文档页面上的“遍历”,对我来说这是类似的功能任务,但不完全相同。
所以这里的问题是:
哪种形式更快?
他们真的选择相同的东西,或'父母>孩子的形式选择了大孩子以及直系孩子吗?
答案 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锚点,那么你面临着一个完全不同的问题。 : - )