如何在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()