我用来在我的函数顶部声明我需要的所有对象,我用它来缓存并保持应用程序的快速。例如,我有类似的东西:
var $object1 = $('#my_element'),
$object2 = $('.other_elements'),
$object3 = $('.again_something_else');
我在代码中单独使用这些变量,例如$object1.doSomething()
或$object2.doElse()
,但在某些情况下,我需要将相同的函数应用于两个或更多已经选择的变量。有一种方法可以将这些变量合并在一起,以避免重新选择我需要的元素吗?
我会避免这个:
$('#my_element, .other_elements').myFunction()
并重用我已经拥有的变量。
答案 0 :(得分:3)
您可以使用add
:
描述:将元素添加到匹配元素集中。
因此,如果您想合并$object1
和$object2
,您可以:
var $one_and_two = $object1.add($object2);
演示:http://jsfiddle.net/ambiguous/DHJvR/1/
add
不会修改任何内容,它只是将所选元素合并到一个新的jQuery对象中并返回它,因此$x.add(...)
不会对$object1
做任何事情(感谢{{ 3}}用于提醒/纠正这一点。)
答案 1 :(得分:-1)
您可以使用jQuery.merge将元素缓存合并在一起,因为它们本质上是数组。
jQuery.merge($object1, $object2).myFunction();
请注意$object1
将包含合并列表,因此您将无法重新使用缓存。你可以通过以下方式避免这种情况:
$.merge( $.merge([], $object1), $object2);
IMO,我认为这样做会更简单:
function assignHandler () {
$object1.myFunction();
$object2.myFunction();
}