32

jQuery オブジェクトの配列があり、代わりに 1 つの複合 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/

期待される結果は、両方の div が非表示になることです。

何か案は?

4

6 に答える 6

28

試す

var d = $($.map(c, function(el){return $.makeArray(el)}));

または

var d = $($.map(c, function(el){return el.get();}));

デモ。

于 2012-07-03T04:01:52.753 に答える
1

やってみませんか

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();
于 2012-07-03T03:54:40.463 に答える
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();
于 2012-07-03T04:14:30.007 に答える
0

jQueryオブジェクトの配列があることがわかっている場合は、$.eachそれらを循環させるために使用できます(または、それらを通常の配列として扱い、循環させることができます)。必要に応じて、これを使用して結合セレクターを作成することも、イテレーターでそれらを操作することもできます。

于 2012-07-03T03:59:30.187 に答える
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
}())
于 2012-07-03T03:51:59.733 に答える