Javascript 将相同的函数应用于多个jQuery对象,而不重新设置它们
我使用在函数顶部声明我需要的所有对象,我使用这些对象来缓存和保持应用程序的速度。例如,我有一些类似于:Javascript 将相同的函数应用于多个jQuery对象,而不重新设置它们,javascript,jquery,performance,Javascript,Jquery,Performance,我使用在函数顶部声明我需要的所有对象,我使用这些对象来缓存和保持应用程序的速度。例如,我有一些类似于: var $object1 = $('#my_element'), $object2 = $('.other_elements'), $object3 = $('.again_something_else'); 我在代码中单独使用这些变量,例如$object1.doSomething()或$object2.doElse(),但在某些情况下,我需要对两个或多个已选择的变量应用相同
var $object1 = $('#my_element'),
$object2 = $('.other_elements'),
$object3 = $('.again_something_else');
我在代码中单独使用这些变量,例如$object1.doSomething()
或$object2.doElse()
,但在某些情况下,我需要对两个或多个已选择的变量应用相同的函数。有没有一种方法可以将这些变量合并在一起,以避免重新选择所需的元素
我要避免这种情况:
$('#my_element, .other_elements').myFunction()
并重复使用我已有的变量。您可以使用:
描述:将元素添加到匹配的元素集中
因此,如果您想将$object1
和$object2
组合在一起,您可以:
var $one_and_two = $object1.add($object2);
演示:
add
不会修改任何内容,它只是将所选元素合并到一个新的jQuery对象中,并返回它,因此$x.add(…)
不会对$object1
做任何事情(感谢您在这一点上的提醒/更正)。您可以使用它将元素缓存合并在一起,因为它们本质上是数组
jQuery.merge($object1, $object2).myFunction();
请注意,$object1
将包含合并列表,因此您将无法重新使用缓存。您可以通过以下方式避免这种情况:
$.merge( $.merge([], $object1), $object2);
在国际海事组织,我认为这样做更简单:
function assignHandler () {
$object1.myFunction();
$object2.myFunction();
}
这不是
.each()
所做的吗?jQuery中的each是隐式的,我希望将对象合并在一起。$.each([$object1,$object2],function(index,val){val.myFunction();});我不理解这个方法的奇怪之处:如果我这样做会怎么样:var$one_和_two=$($object1)
?@mimo:应该是一样的。“给定一个表示一组DOM元素的jQuery对象,.add()方法通过这些元素和传递给该方法的元素的并集来构造一个新的jQuery对象。”无需创建新的空jQuery对象。@JanDvorak:好的,谢谢提醒。出于某种原因,我修改了$x.add(…)
修改了$x
。说明:将两个数组的内容合并到第一个数组中。$。合并
:返回:array