我只是在学习jQuery而且我一直无法找到任何具体解决这个问题的人。
为了表现,选择$('#element')还是$('div#element')会更好吗?它有所作为吗?
答案 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,它更具体。