多次使用jQuery $()运算符会对性能产生影响吗?

如果我在元素周围构造一次或多次jQuery对象,会有什么显着差异吗? 例如:

var jEl = $(el); $.each(myArray, function() { jEl.addClass(this); } 

与:

 $.each(myArray, function() { $(el).addClass(this); } 

我知道还有其他方法可以回答这个问题,但我的问题是我是否应该只做一次$(el),或者它是否真的无关紧要。 这个例子是人为的。

奖金积分用于解释$(el)在幕后的作用。

我知道理论上正在做更多的工作,我不知道的是它是否重要……如果jQuery缓存它或浏览器都非常擅长第二个请求或其他什么,而不是它的价值。

仅供参考:相关的jQuery API链接在这里(我提供的是因为$()对谷歌来说不是最简单的事情): http : //api.jquery.com/jQuery/#using-dom-elements

还值得包括这个有用的链接: http : //www.artzstudio.com/2009/04/jquery-performance-rules/ ,他的几个要点集中在保存,链接和选择上。

是的,会对性能产生影响。

在第一个示例中,仅创建了一个实例。

在第二个中,将为循环的每次迭代创建一个实例。

根据myArray的大小,这可能会导致创建大量无关的实例,这些实例将通过内存进行咀嚼。

第一种方式会更快。 首先,您每次创建一个新对象,这取决于您的浏览器,您的页面以及el是什么。

如果el是一个字符串(例如“#myname”),则$(el)将“查询”DOM以查找该元素。 jQuery在执行查询时速度非常快,但确实需要一些时间。 所以多次这样做会花费更多倍的时间。

我获得奖励积分吗?

是的会有。 每次调用$()时,jQuery都会对元素进行单独的DOM搜索。

如果每次搜索需要0.1秒(通常要快得多,但这是一个很容易使用的数字),并且你的数组中有1000个元素,那就是100秒专门用于遍历第二个例子中的DOM,而不是第一次只有0.1秒。