jQuery选择器的特异性

时间:2010-07-12 20:26:44

标签: jquery

我只是在学习jQuery而且我一直无法找到任何具体解决这个问题的人。

为了表现,选择$('#element')还是$('div#element')会更好吗?它有所作为吗?

4 个答案:

答案 0 :(得分:4)

最佳做法是不在ID之前放置标记名称。

ID查找使用原生getElementById()并且非常快,因此任何不需要的额外比较都会降低选择器的速度。

通常,请使用$('#myID')代替$('div#myID')

性能差异很小,但许多最佳实践都是如此。

可能唯一可能的情况是,当您对2个不同的页面使用相同的javascript文件时,在两个页面中使用相同的ID,但使用不同类型的标签。那么你需要说明符。

如果是这种情况,您最好调整身份证。

答案 1 :(得分:4)

只需使用#id。

您可以使用firebug控制台粗略测试一下。

结果很有用。

  

nodeName#nodeId = 0.703ms(14方法   呼叫)

     

#nodeId = 0.095ms(4个方法调用)

alt text http://gyazo.com/6c4cf4baf934ed71818cb89ac7f36246.png

答案 2 :(得分:0)

是的,它可以有所作为。就像在css中一样,尽量保持不具体的东西。

这些差异可能很小,但如果有疑问,可以在Firebug中查看。

我很快就会抓住你的参考资料。

修改

我找不到速度测试的快速参考,但这可能是那些不值得担心的过早优化之一,尤其是使用ID。我认为嘶嘶声引擎非常擅长排序。

在涉及标签和类的更复杂的选择器中,这可能更成问题。再次,简介!

编辑#2

我应该看看文档!是的,它确实有所作为 - 需要额外的查找。

http://api.jquery.com/id-selector/#id

他们的好话:

  

一如既往,请记住,作为一个   开发者,你的时间通常是   最宝贵的资源。不要专注   关于选择器速度的优化   除非表现得很清楚   需要改进。

答案 3 :(得分:-2)

如果你认为:

<span id="element"></span>
<div id="element"></div>

$("#element")会选择两者,而$("div#element")只会获得div,它更具体。