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

a c*_*ame 14 performance jquery css-selectors pagespeed

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

var sel1 = $('#selector1');
var sel2 = $('#selector2');
Run Code Online (Sandbox Code Playgroud)

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

$('#selector1, #selector2').fadeTo(300, 1, 'linear');
Run Code Online (Sandbox Code Playgroud)

这只是为了完善我的代码

Ty :)

Jas*_*per 17

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

sel1.add(sel2).fadeTo(300, 1, 'linear');
Run Code Online (Sandbox Code Playgroud)

文档.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');
Run Code Online (Sandbox Code Playgroud)

这是一个演示:http://jsfiddle.net/3xJzE/

UPDATE

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


Emr*_*kan 7

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

sel1.add(sel2).fadeTo(300, 1, 'linear');
Run Code Online (Sandbox Code Playgroud)

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

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

$sel1.add($sel2).fadeTo(300, 1, 'linear');
Run Code Online (Sandbox Code Playgroud)


Den*_*nis 7

jQuery的补充

sel1.add(sel2).fadeTo(300, 1, 'linear');
Run Code Online (Sandbox Code Playgroud)