JavaScript數組具有填充功能:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/fill
所以,你可以寫類似這
$(
new Array(copies).fill(function() {
return $(this).clone();
}.bind(el))
.map(function (el) {
return el();
})
).map(function() { return this.toArray(); }); //Turn into jQuery
,如果你想讓它作爲一個jQuery的功能,你可以重複使用,你可以寫這樣的事情
$.fn.multiply = function(amount) {
var cloneFunction = (function() {
return $(this).clone();
}).bind(this);
return $(
new Array(amount).fill(cloneFunction).map(function(el) {
return el();
});
).map(function() { return this.toArray(); }); //Turn into jQuery
}
這使您可以靈活地克隆的函數調用是分離只在需要時才進行評估。所以如果你想要你可以拆分電話並稍後評估。
意思是這樣的承諾(它返回的功能與結合上下文這一點,所謂的將克隆時)
new Array(amount).fill(cloneFunction);
,這是分辨率
.map(function(el) { return el(); })
這一點最後一點處理事實上,我創建了一個jQuery對象的數組,但真的我想要一個jQuery集合
.map(function() { return this.toArray(); }); //Turn into jQuery
,但無論如何,如果你走這條路線,你的最終解決方案看起來就像這樣。
$(el).multiply(amount).insertAfter(anotherEl);
歡呼
感謝Guffa這是完美的! – uriah