可能重复:
Merging jQuery objects
**目标是表现。重复的问题解决了这个问题,但我不认为会增加性能值,也不会解决这个问题。 **
我想链接几个jQuery元素,为了性能,但为了优化,它们已经缓存在变量中。
所以,如果我有
$elem1 = $('div#elem1');
$elem2 = $('div#elem2');
$elem3 = $('div#elem3');
这不能很好地运作:
$elem1,$elem2,$elem3.hide();
有没有办法做到这一点,链接已经缓存的元素?
谢谢!
[编辑]
好的,我真的需要澄清一下。我的链接目标是表现,简洁明了的代码奖励
$('div#elem1,div#elem2,div#elem3')。hide();
由于它不再使用缓存的变量而是再次访问dom,因此失败了。访问dom是昂贵的,所以我很确定它比3行慢。
.add()和.merge(),我假设比在三行上分离操作更昂贵。为了性能,直到我有时间到jPerf,我会假设3条不同的线而不是额外的操作具有最佳性能。
感谢合作,头脑风暴和思想,我很感激。我不知道可能性,否则不会知道在jPerf上测试什么。
答案 0 :(得分:2)
不确定它有多清洁,但你可以使用jQuery的each()
迭代它们的数组。它并不完全是链接,但最终结果应该是相同的:
$.each([$elem1,$elem2,$elem3], function() {this.hide()})
答案 1 :(得分:1)
我唯一能想到的就是将所有这些与.add()
$elem1.add($elem2).add($elem3).hide();
答案 2 :(得分:0)
不,我的朋友,这将永远不会奏效。 尝试这样做
$('div#elem1,div#elem2,div#elem3')。hide();
或
$ elem1.hide(); $ elem2.hide(); $ elem3.hide()
答案 3 :(得分:0)
var elements = [];
elements.push($elem1);
elements.push($elem2);
elements.push($elem3);
$(elements).each(function(i){
elements[i].hide();
});