Javascript matriz tiene una función de relleno:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/fill
por lo que podría escribir algo como esto
$(
new Array(copies).fill(function() {
return $(this).clone();
}.bind(el))
.map(function (el) {
return el();
})
).map(function() { return this.toArray(); }); //Turn into jQuery
y si quería como una función de jQuery que se puede volver a utilizar se podría escribir algo como esto
$.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
}
esto le da la flexibilidad necesaria para separar la llamada a la función del clon de ser evaluado solo cuando lo necesita Entonces, si quisieras, podrías dividir la llamada y evaluarla más tarde.
significando esta es la promesa (que vuelve funciones con el contexto ligado a esto que cuando se le va a clonar)
new Array(amount).fill(cloneFunction);
y esta es la resolución
.map(function(el) { return el(); })
y este pequeño última parte se encarga de la hecho de que he creado una matriz de objetos jQuery, pero realmente quiero una colección jQuery
.map(function() { return this.toArray(); }); //Turn into jQuery
pero, en cualquier caso, su solución final sería algo como esto, si sigue esta ruta.
$(el).multiply(amount).insertAfter(anotherEl);
aplausos
Gracias Guffa Esto es perfecto! – uriah