jQuery,如何使用多个缓存元素

时间:2011-12-15 20:34:32

标签: jquery performance css-selectors pagespeed

对于我的项目,我使用缓存选择器来加速,并看到改进: (减少文档内的搜索)

var sel1 = $('#selector1');
var sel2 = $('#selector2');

如何在这种情况下使用缓存选择器?例如:

$('#selector1, #selector2').fadeTo(300, 1, 'linear');

只是为了完善我的代码

Ty:)

5 个答案:

答案 0 :(得分:17)

您可以使用.add()“将元素添加到匹配元素集”:

sel1.add(sel2).fadeTo(300, 1, 'linear');

.add()的文档:http://api.jquery.com/add

.add()可以接受:

  • 选择器
  • DOM元素
  • jQuery对象
  • 和具有上下文($('<selector>', <context>)
  • 的选择器

您还可以将一组DOM元素传递给jQuery:

var one = $('#one')[0],
    two = $('#two')[0];

$([one, two]).fadeTo(300, 1, 'linear');

以下是演示:http://jsfiddle.net/3xJzE/

<强>更新

我创建了当前答案的三种不同方法的jsperf:http://jsperf.com/jquery-fadeto-once-vs-twice(似乎使用数组选择器是最快的:$([one, two]).fadeTo...

答案 1 :(得分:7)

您可以使用.add()方法;

sel1.add(sel2).fadeTo(300, 1, 'linear');

在命名变量时添加$前缀会很好。这样您就可以将它们与标准的javascript对象区分开来。所以这更好:

var $sel1 = $('#selector1');
var $sel2 = $('#selector2');

$sel1.add($sel2).fadeTo(300, 1, 'linear');

答案 2 :(得分:7)

jQuery的add

sel1.add(sel2).fadeTo(300, 1, 'linear');

答案 3 :(得分:1)

如果您已经存储了选择器,则只需将fadeTo单独应用于每个选择器。无论如何,JQuery只需要解析选择器......

sel1.fadeTo(300, 1, 'linear');
sel2.fadeTo(300, 1, 'linear');

答案 4 :(得分:1)

试试这个

sel1.add(sel2).fadeTo(300, 1, 'linear');