JavaScript Array posiada funkcję wypełnienia:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/fill
więc można napisać coś podobnego to
$(
new Array(copies).fill(function() {
return $(this).clone();
}.bind(el))
.map(function (el) {
return el();
})
).map(function() { return this.toArray(); }); //Turn into jQuery
i jeśli chciałeś go jako funkcja jQuery, które można ponownie wykorzystać można napisać coś takiego
$.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
}
to daje elastyczność, aby oddzielić wywołanie funkcji klonu od bycia oceniana tylko wtedy, gdy jej potrzebujesz. Więc jeśli chcesz, możesz podzielić połączenie i ocenić później.
oznacza to obietnica (zwraca funkcje z oprawionego kontekście do tego, że kiedy nazywa się sklonować)
new Array(amount).fill(cloneFunction);
i jest to rozdzielczość
.map(function(el) { return el(); })
i ten mały ostatni bit uchwyty Faktem jest, że stworzyłem tablicę obiektów jQuery, ale naprawdę chcę mieć kolekcję jQuery, która ma być jQuery, , ale w ostatecznym rozrachunku twoje ostateczne rozwiązanie będzie wyglądało mniej więcej tak, jeśli pójdziesz tą drogą.
$(el).multiply(amount).insertAfter(anotherEl);
okrzyki
Dzięki Guffa ten jest doskonały! – uriah