如何从jQuery对象数组创建jQuery对象?

zer*_*kms 30 arrays jquery

假设我有一个jQuery对象数组,并希望有一个复合jQuery对象.

除了手动遍历数组并将元素附加到刚刚创建的jquery对象之外,还有什么解决方案.add()

这不符合我的要求:

var a = $('#a'),
    b = $('#b'),
    c = [a, b];

// the lines above is the set up, they cannot be changed
var d = $(c);
d.hide();?
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/zerkms/896eN/1/

预期的结果是两个div都被隐藏了.

有任何想法吗?

xda*_*azz 27

尝试

var d = $($.map(c, function(el){return $.makeArray(el)}));
Run Code Online (Sandbox Code Playgroud)

要么

var d = $($.map(c, function(el){return el.get();}));
Run Code Online (Sandbox Code Playgroud)

演示.


Jul*_*ian 12

我来这里寻找比我已经拥有的更干净的答案,但没找到一个.为了下一个人的缘故,我想我会发布我的解决方案:

var a = $('#a'),
    b = $('#b'),
    c = [a, b];

var d = c.reduce($.merge);
d.hide();?
Run Code Online (Sandbox Code Playgroud)

我有点惊讶的是,没有一些jQuery特定的方法可以使这个更清洁,但Array.reduce如果没有更具体的内容,这绝对是这项工作的正确工具jQuery.

  • 这似乎比我接受的答案还干净。 (2认同)