假设我有一个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都被隐藏。
有什么想法吗?
答案 0 :(得分:27)
尝试
var d = $($.map(c, function(el){return $.makeArray(el)}));
或者
var d = $($.map(c, function(el){return el.get();}));
答案 1 :(得分:1)
你可以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();
答案 2 :(得分:1)
试试这个:
var a = $('#a'),
b = $('#b'),
c = [a, b],
d = $();
$.each(c, function(i, jqObj) {
$.merge(d, jqObj);
});
d.hide();
或:
var a = $('#a'),
b = $('#b'),
c = [a, b],
d = $();
$.each(c, function(i, jqObj) {
d = d.add(jqObj);
});
d.hide();
答案 3 :(得分:0)
var els = ['#a', '#b', '#c']
var $els = $(els.join(', '))
编辑:这样做,丑陋的:
var d = $(function(){
var els = []
for (var i = 0, l = c.length; i < l; i++)
els.push(c[i][0])
return els
}())
答案 4 :(得分:0)
假设你知道你有一个jQuery对象数组,你可以使用$.each
来循环它们(或者只是将它们视为一个普通的数组来循环它们)。如果您愿意,可以使用它来创建组合选择器,或者只在迭代器中对它们进行操作。