Ответ 1
Try
var d = $($.map(c, function(el){return $.makeArray(el)}));
или
var d = $($.map(c, function(el){return el.get();}));
Скажем, у меня есть массив объектов 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();
http://jsfiddle.net/zerkms/896eN/1/
Ожидаемый результат: оба divs скрыты.
Любые идеи?
Try
var d = $($.map(c, function(el){return $.makeArray(el)}));
или
var d = $($.map(c, function(el){return el.get();}));
Я пришел сюда, чтобы найти более чистый ответ, чем у меня, но не нашел его. Ради следующего парня, который я приду, думаю, я отправлю свое решение вместо этого:
var a = $('#a'),
b = $('#b'),
c = [a, b];
var d = c.reduce($.merge);
d.hide();
Я удивлен, что не существует специального метода jQuery
, который делает этот чист, но Array.reduce
определенно является правильным инструментом для этого задания, если в jQuery
не существует ничего более конкретного.
Можете ли вы попробовать
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();
Попробуйте следующее:
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();
var els = ['#a', '#b', '#c']
var $els = $(els.join(', '))
Изменить: Это сделает, уродливо tho:
var d = $(function(){
var els = []
for (var i = 0, l = c.length; i < l; i++)
els.push(c[i][0])
return els
}())
Предполагая, что вы знаете, что у вас есть массив объектов jQuery, вы можете использовать $.each
для их циклического перехода (или просто рассматривать их как обычный массив для их циклического перехода). Вы можете использовать это, чтобы создать комбинированный селектор, если хотите, или просто выполнить операции с ними в итераторе.