2016-04-25 165 views
0

是否有可能在jQuery中合併3個或多個DOM對象?我在計算器這裏找到這一解決方案,但它只是用於合併兩個對象:Merging jQuery objects如何使用jQuery合併2個以上的DOM對象?

例子:

var input1 = $('.input-1'), 
    input2 = $('#parent-div input'), 
    input3 = $('.input-3'), 
    input4 = $('.input-4'), 
    input5 = $('.input-5') 

    merge([input1, input2, input3, input4]).val('My custom input text'); 

在我來說,我有幾個輸入,但我只想要合併的其中幾個。

回答

0

難道我們只能在下列方式使用$.add()

$(document).ready(function(){ 
 
    var input1 = $('.input-1'); 
 
    var input2 = $('#parent-div input'); 
 
    var input3 = $('.input-3'); 
 
    var input4 = $('.input-4'); 
 
    var input5 = $('.input-5'); 
 
    
 
    var collection = $(input1); 
 
    // Capture the new collection 
 
    collection = collection.add(input2).add(input3).add(input4); 
 
    collection.val('My custom input text'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<input type="text" class="input-1" value="defualt text" > 
 
<div id="parent-div"> 
 
    <input type="text" class="input-2" value="defualt text" > 
 
    <input type="text" class="input-3" value="defualt text" > 
 
</div> 
 
<input type="text" class="input-3" value="defualt text" > 
 
<input type="text" class="input-4" value="defualt text" > 
 
<input type="text" class="input-5" value="defualt text" >

0

您可以創建一個輔助功能,只是jQuery的對象數組在迭代:

function merge(jqs) { 
    var obj = $(); 
    jqs.forEach(function (jq) { 
    obj.add(jq); 
    }); 
    return obj; 
} 

您也可以嘗試這樣的事:

function merge(jqs) { 
    return $(Array.prototype.concat.apply([], jqs.map(function (jq) { return Array.from(jq); }))); 
}