只是把这个问题扔到这里,因为它让我今晚思考。
我以前听说过,无论何时都将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:第n个子(3n+2)).filter(.someclass)
。
编辑
在一个有点相关的问题上,我继续做了在有标签和没有标签选择的情况下进行性能测试(感谢Raynos),而且似乎没有标签选择比在FF和Chrome上选择标签更有益。在IE8上使用标签仍然更快,但从狭义上看,它完全被其他浏览器上的替代品所掩盖。嗯。