2011-08-12 238 views
3

这两个代码块有没有任何显着的性能差异?jQuery元素选择器

var element = $("#some-element"); 

SomeMethod1(element); 
SomeMethod2(element); 
SomeMethod3(element); 

和...

SomeMethod1($("#some-element")); 
SomeMethod2($("#some-element")); 
SomeMethod3($("#some-element")); 
+0

不知道是否有很大的性能差异(这是在客户端,除非你的页面已经难以管理大,这有什么关系吗?)但据我所知,推荐第二种方法。设置一个jQuery对象来引用DOM的一部分可能会导致一些意想不到的行为。 –

回答

4

这取决于您的意思significant

第一个代码段总是比第二个代码段快,因为不止一次调用$()会产生代价(因为jQuery不会缓存先前调用的结果)。无论重要与否取决于您的性能要求。

2

这确实在DOM元素查找并创建一个jQuery对象。

var element = $("#some-element"); 

在第一个,它重用此对象。

在第二个,它必须做查找和创建3倍,因此,第一个是更好的性能明智。

1

这并不重要,但也不可忽略。在这种情况下,因为您使用的是ID选择器,它不会有太大的区别,但是如果您要使用类选择器或属性选择器,那么它将会产生很大的差异。

第一个将总是给你比第二个更好的性能,因为你在多个地方重复使用同一个对象。

1

是的。第一个更快,第二个更慢

为什么?

因为对于元件第一searchs只有一次,第二三次

0

后期:

  1. 3串创作(字符串文字保持选择器)
  2. 3函数调用$(),其中的每一个导致
  3. 以内的更多函数调用
  4. 3文档搜索相同元素

鉴于使用的选择器的类型,我不会说它是显着,但后者需要更多的处理时间并使用更多的内存(请参阅上面的列表)。这些东西加起来就超过了应用程序的大小。

使用不太直接的选择器,它可能会变得非常快速。

编辑:然而,后者,是丑陋的,让我疯了。 :)

0

那么,第一个片段重用第一个电话到$("#some-element"),而另一个例子需要查找三次#some-element