元素+ ID与jquery中的唯一ID?

时间:2015-09-02 14:15:24

标签: jquery html performance dom htmlelements

return;将扫描整个DOM中的所有div。

div#some_id将直接从DOM中获取ID。

哪个更快? #some_id$('div#some_id')

3 个答案:

答案 0 :(得分:2)

请参阅Optimize Selectors

  

使用ID开始选择器始终是最好的。

  

使用document.getElementById()处理仅ID选择,这非常快,因为它是浏览器的原生。

所以答案是:$('#some_id')应该更快。

答案 1 :(得分:1)

由于ID在DOM中应该是唯一的,因此div#some_id将对所有DOM元素执行不必要的扫描,#some_id将对其进行直接扫描。

您还可以在此处查看结果:div-some-id-vs-some-id

答案 2 :(得分:1)

我在控制台中运行了一个简单的测试。似乎只是使用#id更快,因为@Ulli说。这是测试代码:

var perf = performance;

var a = perf.now(); $("#custom-header"); console.log(perf.now() - a);
VM795:2 0.03399999695830047
undefined
var a = perf.now(); $("#custom-header"); console.log(perf.now() - a);
VM796:2 0.0329999893438071
undefined
var a = perf.now(); $("#custom-header"); console.log(perf.now() - a);
VM797:2 0.0329999893438071
undefined
var a = perf.now(); $("#custom-header"); console.log(perf.now() - a);
VM798:2 0.03500000457279384
undefined
var a = perf.now(); $("div#custom-header"); console.log(perf.now() - a);
VM799:2 0.07000000914558768
undefined
var a = perf.now(); $("div#custom-header"); console.log(perf.now() - a);
VM800:2 0.06600000779144466
undefined
var a = perf.now(); $("div#custom-header"); console.log(perf.now() - a);
VM801:2 0.0680000230204314
undefined
var a = perf.now(); $("div#custom-header"); console.log(perf.now() - a);
VM802:2 0.06799999391660094
undefined
var a = perf.now(); $("div#custom-header"); console.log(perf.now() - a);
VM803:2 0.06799999391660094
undefined