将相同的函数应用于多个jQuery对象,而无需重新包含它们

时间:2013-06-06 04:34:28

标签: javascript jquery performance

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

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

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

我会避免这个:

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

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

2 个答案:

答案 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();
}