div#some_id
将扫描整个 DOM 中的所有 div。
#some_id
将直接从 DOM 中获取 ID。
那么哪个更快?$('div#some_id')
还是$('#some_id')
?
div#some_id
将扫描整个 DOM 中的所有 div。
#some_id
将直接从 DOM 中获取 ID。
那么哪个更快?$('div#some_id')
还是$('#some_id')
?
请参阅优化选择器:
以 ID 开头的选择器总是最好的。
和
仅 ID 选择是使用 document.getElementById() 处理的,因为它是浏览器原生的,所以速度非常快。
所以答案是:$('#some_id') 应该更快。
由于 ID 在 DOM 中应该是唯一的,因此div#some_id
将对所有 DOM 元素进行不必要的扫描,并将对其进行#some_id
直接扫描。
你也可以在这里看到结果:div-some-id-vs-some-id
我在控制台中运行了一个简单的测试。正如@Ulli 所说,似乎使用#id 更快。这是测试代码:
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