按id调用jQuery函数或更好地分组到一个调用中

按id调用jQuery函数或更好地分组到一个调用中,jquery,html,performance,Jquery,Html,Performance,我想知道如果我将一些id组合到一个jQuery函数调用中,或者逐行调用它(id之后id),是否会提高性能 目前情况是这样的: $('#culetType').combobox(); $('#girdle').combobox(); $('#polishLinesIntensity').combobox(); $('#burnmarksIntensity').combobox(); $('#scratchesIntensity').combobox(); $('#damagesIntensity'

我想知道如果我将一些
id
组合到一个jQuery函数调用中,或者逐行调用它(
id
之后
id
),是否会提高性能

目前情况是这样的:

$('#culetType').combobox();
$('#girdle').combobox();
$('#polishLinesIntensity').combobox();
$('#burnmarksIntensity').combobox();
$('#scratchesIntensity').combobox();
$('#damagesIntensity').combobox();
因此,如果我编辑以下内容,是否会提高性能:

$('#culetType, #girdle, #polishLinesIntensity, #burnmarksIntensity, #scratchesIntensity, #damagesIntensity').combobox();
除此之外,阅读并不愉快

我知道我可以给所有那些
id
的人一个
class
,这样我就只有一个电话了


那么,这是否会提高性能呢?

在较新的浏览器中,使用单个选择器会略微提高性能,因为jQuery使用内置方法来运行选择器。创建一个jQuery对象并对其中的所有元素执行操作比创建一组jQuery对象要快一些

在较旧的浏览器中,解析包含单个id的选择器会稍微快一点,但创建多个jQuery对象会稍微慢一点,因此这些方法的性能大致相同。

据我所知,每次编写
$()
都会调用DOM。因此,即使在您调用某些更好的元素时:

el = $('#myEl');
el.firstAction();
el.secondAction();
而不是

$('#myEl').firstAction();
$('#myEl').secondAction();
因此,我认为使用
$('、…、…、…)
进行一次调用会更快,但这只是一个小小的提升

但您需要记住,在接到一个电话的情况下,您不能执行以下操作:

$('#culetType').combobox();
$('#girdle').combobox({property: false});
$('#polishLinesIntensity').combobox();

事实上:按类选择要比使用id选择器慢得多!如果您只使用一次,可能就可以了。使用id总是比类站点(如)更快。这样,您就可以创建基准测试,以可靠地衡量切换到类选择器将如何影响特定代码的性能,具体取决于浏览器。一个好的一般规则是在遇到性能问题时进行优化,对吗?为了可读性/可维护性,我想我会选择这里的类,并且只在它引起问题时才担心性能。你可以看看我在JSPref中创建的。基于Frédéric&Arun的评论,我尝试使用jsperf:结果与你说的一样。