假设我有一个jQuery对象数组,并且希望有一个复合jQuery对象。
除了手动遍历数组并使用.add()
将元素附加到刚刚创建的jquery对象之外,还有什么解决方案
这不是我想要的:
var a = $('#a'),
b = $('#b'),
c = [a, b];
// the lines above is the set up, they cannot be changed
var d = $(c);
d.hide();
http://jsfiddle.net/zerkms/896eN/1/
预期的结果是两个div都是隐藏的。
有什么想法吗?
发布于 2012-07-03 12:01:53
试一试
var d = $($.map(c, function(el){return $.makeArray(el)}));
或
var d = $($.map(c, function(el){return el.get();}));
发布于 2016-12-04 08:48:07
我来到这里寻找一个比我已经有的更清晰的答案,但没有找到。为了给下一个人着想,我想我还是把我的解决方案贴出来吧:
var a = $('#a'),
b = $('#b'),
c = [a, b];
var d = c.reduce($.merge);
d.hide();
我有点惊讶的是,没有一些特定于jQuery
的方法可以使这项工作变得更简洁,但是如果jQuery
中没有更具体的方法,那么Array.reduce
绝对是适合这项工作的正确工具。
发布于 2012-07-03 11:54:40
你能try吗?
var a = $('#a'),
b = $('#b'),
c = [a, b];
d = [];
$.each(c, function(i, v){
if(v.length>0){
d.push(v[0]);
}
});
e = $(d);
e.hide();
https://stackoverflow.com/questions/11304173
复制相似问题