jquery选择器,链接

时间:2012-09-03 16:28:01

标签: jquery jquery-selectors css-selectors

  

可能重复:
  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上测试什么。

4 个答案:

答案 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();
});