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

Posted

技术标签:

【中文标题】将多个 jQuery 对象作为数组传递【英文标题】:Passing multiple jQuery objects as an array 【发布时间】:2015-05-08 15:11:15 【问题描述】:

我想知道是否可以在 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' );

【问题讨论】:

你想用它做什么?你希望得到什么结果? $("selector1", "selector2", document.getElementById("test")) 多个选择器的逗号分隔 @SterlingArcher - 也许。 .. 或者他可能正在寻找$("selector1, selector2, #test"))。很难说,根据他的写作方式。 @SterlingArcher 第一个参数是 selector,第二个参数是 context 选择器的细节并不重要,但我认为它是多个选择器。这就是为什么我没有发布答案大声笑 【参考方案1】:

编辑:

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

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

您将能够在没有 .each() 的情况下一次向所有这些元素添加一个类

【讨论】:

是的,但我仍然需要使用$.each - 我想特别避免这种情况。 我猜你有一点错别字。 $( 之后缺少左方括号。不过答案很好! @IfediOkonkwo 感谢您指出这一点,我匆忙输入时错过了它【参考方案2】:

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

但是,您可以将调用链接到.add()

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

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

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

【讨论】:

虽然这不是我真正想要的,但它非常接近。谢谢。【参考方案3】:

我认为简短的回答是“不”。 JQuery 不期望 array 作为选择器。

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

第二个参数被视为执行搜索的“父”容器。

如果您坚持将多个对象合并为一个,则可以这样做:

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

【讨论】:

以上是关于将多个 jQuery 对象作为数组传递的主要内容,如果未能解决你的问题,请参考以下文章

使用 jQuery 将表单数据作为数组传递给 Laravel

使用jquery将多个输入框的值获取到多维数组中

有没有办法将多个数组传递给 PHP json_encode 并用 jQuery 解析它?

如何使用 JavaScript 将包含多个数组的数组作为参数化 URL 传递

如何将多个图像作为输入传递给python脚本

通过 Ajax 将多个复选框传递给 PHP