我想知道是否有可能在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' );
答案 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 Element
s。否则,它会将其视为使用jQuery(object)
overload,将字符串保留为原样。
console.log( $(['#foo', '#bar']).get() ); // [ '#foo', '#bar' ]
答案 2 :(得分:0)
我认为简短的回答是" no"。
JQuery不希望array
成为选择器。
它是逗号分隔的字符串列表,或单个DOM对象或jQuery对象。
第二个参数被视为"父母"在其中进行搜索的容器。
如果您坚持将多个对象合并为一个,则可以选择:
$($selector1).add( $selector2).add(document.getElemetByID( 'test' ))