jQuery中的with-tag vs without-tag选择

时间:2011-05-23 18:48:25

标签: jquery jquery-selectors

在这里抛出这个问题'因为它让我今晚想到了。

我之前听说过,更好可以随时将HTML标记包含到jQuery选择器中,因为它可以通过告诉jQuery要查找哪些HTML标记来提升选择性能所以它不会搜索文档中的所有内容。 (如果可以,请转$('div.someclass')而不是$('.someclass')。)

我的问题是,现在有多么真实,使用当前版本的jQuery(目前为1.6.1)?

我甚至不确定这个概念是否出现在Sizzle之前(甚至不确定Sizzle是否有助于jQuery在这方面表现更好)。

当然,良好的编码实践会要求我在只是为了保持清晰时包含HTML标记,但是当我更愿意去的时候,我有一个非常灰色的区域

$('.someclass')

只是因为我不想去

$('div.someclass, a.someclass, p.someclass, img:nth-child(3n+2).someclass')

完全理论上只有家伙。我知道我可以去$('div,a,p,img:nth-child(3n+2)').filter('.someclass')

修改

在一个有点相关的说明中,我继续进行了perf tests on-tag vs without-tag selection(感谢Raynos),似乎没有标记选择比使用标记选择更有益。 FF和Chrome。在IE8上,with-tag仍然更快,但是由于边缘狭窄,它完全被其他浏览器上的替代品黯然失色。 HMM。

1 个答案:

答案 0 :(得分:1)

$('.someclass')应该比$("div.someclass, p.someclass")

快很多

如果它没有扩大查询范围,那么它是值得具体的。

Benchmark