2013-04-08 26 views
0

我想知道,如果我在一个调用jQuery函数中分组一些id的性能改进,或者逐行调用它(idid )。每个ID调用jQuery函数或更好的分组到一个调用

眼下是这样的:

$('#culetType').combobox(); 
$('#girdle').combobox(); 
$('#polishLinesIntensity').combobox(); 
$('#burnmarksIntensity').combobox(); 
$('#scratchesIntensity').combobox(); 
$('#damagesIntensity').combobox(); 

所以会是一个性能的提高,如果我DIT这样的:

$('#culetType, #girdle, #polishLinesIntensity, #burnmarksIntensity, #scratchesIntensity, #damagesIntensity').combobox(); 

除了这个事实,它不愉快的阅读。

我知道我可以给所有那些idclass,这只会让我只有一个电话。

那么它会是一个性能提升或不?

+0

:选择由类比使用ID选择慢得多!如果你只是使用它一次,它可能是好的。 – Imperative 2013-04-08 12:21:20

+0

使用ID将总是快于类 – 2013-04-08 12:24:55

+1

像[jsperf.com](http://jsperf.com/)这样的站点允许您创建基准来可靠地测量如何切换到类选择器将影响特定代码的性能,具体取决于在浏览器上。 – 2013-04-08 12:25:44

回答

1

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

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

+0

基于Frédéric&Arun的评论创建的,我尝试过使用jsperf:result和你说的一样。 http://jsperf.com/single-vs-multiple-call – Mark 2013-04-08 12:45:13

1

据我所知,写作$()每次都会调用DOM。因此,即使在你们所说的一些元素更好地做到:的

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

代替

$('#myEl').firstAction(); 
$('#myEl').secondAction(); 

所以我想打一个电话,与$('...,...,...')的运行速度更快,但它会是小的推动作用。

但是,你要记住,在一个呼叫的情况下,你不能做这样的事情:

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

这次不需要参数;-),但感谢您的信息。 – Mark 2013-04-08 12:51:29