如何在javascript变量中存储多个jQuery选择器?

显然,如果jQuery选择器被多次使用,那么将它们存储在变量中是个好主意(如果只使用一次,这不是一个好主意)。

我的问题是,如何在变量中存储多个可互换使用的选择器。

例如,假设我选择$('#object1, #object2) ,然后我选择`$(’#object1’)。 如何创建可与其他变量组合以创建多个选择器的变量。

如果我这样写:

 var object1 = "#object1"; var object2 = "#object2"; $(object1 + "," + object2); 

我只会引用字符串#object1 ,而不是实际的选择器。

那么如何在变量中存储多个选择器,以便它们可以互换使用?

问题不在于selector string ,问题在于DOM元素的查询 。 “问题”意味着,它很昂贵。 这就是为什么你应该只查询一次元素并存储对它的引用。

 var object1 = $('#object1'), object2 = $('#object2'); object1.some_method(); 

更新

参考你的评论:

jQuery提供了.add() 帮助方法,它允许连接jQuery对象:

 object1.add(object2).method(); 

不完全确定我明白你的意思。 你想存储jQuery对象,所以你不必像某种缓存那样不断地搜索它们吗?

 var cache = new Object(); cache['#object1'] = $('#object1'); cache['#object2'] = $('#object2'); 

要检索jQuery值,您只需调用cache['#object1']

你可以使用.add()

 var object1 = $('#object1'), object2 = $('#object2'); object1.add(object2).addClass('couple'); 

要么,

 var multiple = [object1[0], object2[0], ...]; $(multiple).addClass('party'); 

传递给$()fn时,selector是一个字符串。 返回与选择器匹配的Elements集合。 所以这段代码没有任何问题。

您的代码也可以写成,

 var object1 = "#object1", object2 = "#object2"; $(object1).add(object2).doSomething(); 

或者可以进一步优化,

 var object1 = $('#object1'), object2 = $('#object2'); object1.add(object2).doSomething(); 

doSomething可以是jQuery或jQuery插件定义的方法。

你为什么不用简单的方法。

 var severalVar = 'h1,h2,h3,h4,h5,h6'; $(severalVar).hide()