将多个jQuery对象作为数组传递

时间:2015-03-06 22:09:09

标签: javascript jquery arrays object jquery-selectors

我想知道是否有可能在jQuery中做这样的事情:

$( [ $selector1, $selector2, document.getElemetByID( 'test' ) ] )
编辑:我懒惰。 $selector1$selector2已经是jQuery对象。我试图避免使用$.each

以下是我尝试做的更深入的示例:

var $lastLink = $( '.links' ).filter( ':last' );
var $nextThumbnail = $( '.thumbnail.current' ).next();

假设我想在这些内容中添加active类,我希望尽可能简单 - 因此我正在寻找与之前发布的语法类似的内容

$( [ $lastLink, $nextThumbnail ] ).addClass( 'active' );

3 个答案:

答案 0 :(得分:1)

编辑:

是的,但不完全一样。如果每个$ selector变量代表单个 DOM元素的集合,您可以像这样重写代码:

$([$selector1[0], $selector2[0], document.getElementByID('test')])

您可以在没有.each()

的情况下一次为所有这些元素添加一个类

答案 1 :(得分:1)

我不相信它在单个函数调用中支持它。

但是,您可以将来电链接到.add()

$().add($selector1).add($selector2).add(document.getElementById('test'))

当给出Array时,jQuery()通常期望内容为already be Elements。否则,它会将其视为使用jQuery(object) overload,将字符串保留为原样。

console.log( $(['#foo', '#bar']).get() ); // [ '#foo', '#bar' ]

答案 2 :(得分:0)

我认为简短的回答是" no"。 JQuery不希望array成为选择器。

它是逗号分隔的字符串列表,或单个DOM对象或jQuery对象。

第二个参数被视为"父母"在其中进行搜索的容器。

如果您坚持将多个对象合并为一个,则可以选择:

$($selector1).add( $selector2).add(document.getElemetByID( 'test' ))