对于我的项目,我使用缓存选择器来加速,并看到改进: (减少文档内的搜索)
var sel1 = $('#selector1');
var sel2 = $('#selector2');
如何在这种情况下使用缓存选择器?例如:
$('#selector1, #selector2').fadeTo(300, 1, 'linear');
只是为了完善我的代码
Ty:)
答案 0 :(得分:17)
您可以使用.add()
“将元素添加到匹配元素集”:
sel1.add(sel2).fadeTo(300, 1, 'linear');
.add()
的文档:http://api.jquery.com/add
.add()
可以接受:
$('<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');