jQuery + VanillaJS实现了最快的选择方法

时间:2015-05-04 02:13:26

标签: javascript jquery performance

我正在使用jQuery开发一个应用程序,我想知道用jQuery选择元素的最快方法是什么,这个网页中有数百个元素,每个元素都有一个唯一的ID,我这样做:

$("#main-container").addClass("col-lg-12");

我知道这是最慢的方法,所以我认为主要的问题是什么更快?

// 1
$("#main-container").addClass("col-lg-12");

// 2
$(document.getElementById("main-container")).addClass("col-lg-12");

// 3
$(document.querySelector("#main-container")).addClass("col-lg-12");

3 个答案:

答案 0 :(得分:5)

使用类似http://jsperf.com/的内容进行性能检查

看起来$(document.getElementById("main-container")).addClass("col-lg-12");是这3个中最快的

http://jsperf.com/buttsnanananannana/6

如果您对性能感到恐慌,那么您可能不应该使用jQuery。您可以改为:document.getElementById('main-container').classList.add('col-lg-12')

enter image description here

答案 1 :(得分:1)

如果您真的对性能感兴趣,那么您应该使用jQuery。也就是说,如果你想拥有最快的选择方法,你应该使用最多的JavaScript本机特定选择方法,例如:

document.getElementById()
document.getElementsByTagName()
document.getElementsByClassName()

据我所知,使用最通用的方法非常简单:

document.querySelector()
document.querySelectorAll()

最后一件事就是他们会花时间查看你的选择器是一个类或id,和/或它是否在另一个元素中。

然而,我的推荐是你每次都可以使用特定的东西,如果你想使用jQuery的东西并用它包装它们,那么这取决于你。

您有jsPerf

specs graphic

正如您在此图表中所看到的,document.getElementById()document.querySelector()更快。但当被包裹进$()时,比正常情况慢9倍

答案 2 :(得分:0)

$(document.getElementById("main-container")).addClass("col-lg-12");将成为您提供的三个中最快的选择器。