将多个 jQuery 对象作为数组传递
Passing multiple jQuery objects as an array
我想知道是否可以在 jQuery 中做这样的事情:
$( [ $selector1, $selector2, document.getElemetByID( 'test' ) ] )
编辑:我很懒。 $selector1
和 $selector2
已经是 jQuery 个对象。我试图避免使用 $.each
.
这是我正在尝试做的更深入的示例:
var $lastLink = $( '.links' ).filter( ':last' );
var $nextThumbnail = $( '.thumbnail.current' ).next();
假设我想为这些东西添加一个 class of active
并且我希望它尽可能简单 - 因此我正在寻找与我的语法相似的东西之前发过。
$( [ $lastLink, $nextThumbnail ] ).addClass( 'active' );
我认为简短的回答是 "no"。
JQuery 不期望 array
作为选择器。
它可以是逗号分隔的字符串列表,也可以是单个 DOM 对象或 jQuery 对象。
第二个参数被视为 "parent" 在其中进行搜索的容器。
如果您坚持要将多个对象合二为一,可以这样做:
$($selector1).add( $selector2).add(document.getElemetByID( 'test' ))
编辑:
是的,但不完全是那样。如果你的每个 $selector 变量代表一个 single DOM 元素的集合,你可以像这样重写你的代码:
$([$selector1[0], $selector2[0], document.getElementByID('test')])
并且您将能够在没有 .each()
的情况下一次向所有这些元素添加 class
我不相信它在单个函数调用中支持它。
但是,您可以将调用链接到 .add()
:
$().add($selector1).add($selector2).add(document.getElementById('test'))
当给定 Array
时,jQuery()
通常期望内容为 already be Element
s. Otherwise, it treats it as using the jQuery(object)
overload,字符串保持原样。
console.log( $(['#foo', '#bar']).get() ); // [ '#foo', '#bar' ]
我想知道是否可以在 jQuery 中做这样的事情:
$( [ $selector1, $selector2, document.getElemetByID( 'test' ) ] )
编辑:我很懒。 $selector1
和 $selector2
已经是 jQuery 个对象。我试图避免使用 $.each
.
这是我正在尝试做的更深入的示例:
var $lastLink = $( '.links' ).filter( ':last' );
var $nextThumbnail = $( '.thumbnail.current' ).next();
假设我想为这些东西添加一个 class of active
并且我希望它尽可能简单 - 因此我正在寻找与我的语法相似的东西之前发过。
$( [ $lastLink, $nextThumbnail ] ).addClass( 'active' );
我认为简短的回答是 "no"。
JQuery 不期望 array
作为选择器。
它可以是逗号分隔的字符串列表,也可以是单个 DOM 对象或 jQuery 对象。
第二个参数被视为 "parent" 在其中进行搜索的容器。
如果您坚持要将多个对象合二为一,可以这样做:
$($selector1).add( $selector2).add(document.getElemetByID( 'test' ))
编辑:
是的,但不完全是那样。如果你的每个 $selector 变量代表一个 single DOM 元素的集合,你可以像这样重写你的代码:
$([$selector1[0], $selector2[0], document.getElementByID('test')])
并且您将能够在没有 .each()
的情况下一次向所有这些元素添加 class我不相信它在单个函数调用中支持它。
但是,您可以将调用链接到 .add()
:
$().add($selector1).add($selector2).add(document.getElementById('test'))
当给定 Array
时,jQuery()
通常期望内容为 already be Element
s. Otherwise, it treats it as using the jQuery(object)
overload,字符串保持原样。
console.log( $(['#foo', '#bar']).get() ); // [ '#foo', '#bar' ]