3

我使用在我的函数顶部声明我需要的所有对象,我用它来缓存和保持应用程序的快速。例如我有类似的东西:

var $object1 = $('#my_element'),
    $object2 = $('.other_elements'),
    $object3 = $('.again_something_else');

我在代码中单独使用这些变量,因此例如$object1.doSomething()$object2.doElse()但在某些情况下,我需要将相同的函数应用于两个或多个已选择的变量。有一种方法可以将这些变量合并在一起,以避免重新选择我需要的元素?

我会避免这种情况:

 $('#my_element, .other_elements').myFunction()

并重用我已经拥有的变量。

4

2 回答 2

3

你可以使用add

描述:将元素添加到匹配元素的集合中。

所以如果你想结合$object1and $object2,你可以:

var $one_and_two = $object1.add($object2);

演示:http: //jsfiddle.net/ambiguous/DHJvR/1/

add不修改任何东西,它只是将选定的元素合并到一个新的 jQuery 对象中并返回它,因此$x.add(...)不会做任何事情$object1(感谢Jan Dvorak在这一点上的提醒/更正)。

于 2013-06-06T04:45:51.167 回答
-1

您可以使用jQuery.merge将元素缓存合并在一起,因为它们本质上是数组。

jQuery.merge($object1, $object2).myFunction();

请注意,$object1它将包含合并列表,因此您将无法重新使用缓存。您可以通过以下方式避免这种情况:

$.merge( $.merge([], $object1), $object2);

IMO,我认为这样做会更简单:

function assignHandler () {
    $object1.myFunction();
    $object2.myFunction();
}
于 2013-06-06T04:48:46.390 回答