14

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

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

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

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

只是为了完善我的代码

泰:)

4

5 回答 5

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...:)

于 2011-12-15T20:37:38.777 回答
7

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

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

$如果在命名变量时添加前缀会很好。通过这种方式,您可以将它们与标准 javascript 对象区分开来。所以这更好:

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

$sel1.add($sel2).fadeTo(300, 1, 'linear');
于 2011-12-15T20:37:16.830 回答
7

jQuery的添加

sel1.add(sel2).fadeTo(300, 1, 'linear');
于 2011-12-15T20:37:21.073 回答
1

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

sel1.fadeTo(300, 1, 'linear');
sel2.fadeTo(300, 1, 'linear');
于 2011-12-15T20:36:47.473 回答
1

试试这个

sel1.add(sel2).fadeTo(300, 1, 'linear');
于 2011-12-15T20:40:57.127 回答