de jQuery .each()
toma una función de devolución de llamada y lo aplica a cada elemento en el objeto jQuery.
Imagínese que algo como esto:
$('a.ui-icon-cart').click(function(){
$(this).closest('li').clone().appendTo('#cart ul').each(function() {
$(this).find('h5').remove();
$(this).find('img').css({'height':'40px', 'width':'40px'});
$(this).find('li').css({'height':'60px', 'width':'40px'});
});
});
También puedes, simplemente almacenar el resultado y trabajar en él en su lugar:
$('a.ui-icon-cart').click(function(){
var $new = $(this).closest('li').clone().appendTo('#cart ul')
$new.find('h5').remove();
$new.find('img').css({'height':'40px', 'width':'40px'});
$new.find('li').css({'height':'60px', 'width':'40px'});
});
Me gustaría también sugieren que en lugar de mofiying la CSS como la que acaba de agregue una clase a su li clonado así:
$(this).closest('li').clone().addClass("new-item").appendTo('#cart ul');
Luego configure algunos estilos como:
.new-item img, .new-item li { height: 40px; width: 40px; }
.new-item h5 { display: none }
Hmm .. el segundo ejemplo seguiría disparar de forma asíncrona y no funcionaría en la mayoría de los casos cuando necesitaban la devolución de llamada a suceder * * después de la appendTo – Trip
No estoy seguro de entender lo que significa asynch @trip --- Todo lo que el código anterior es sincronización. No hay llamadas asincrónicas en este código. Incluso la devolución de llamada dentro de cada uno sigue siendo síncrona, se llama inmediatamente. La única diferencia en cualquier ejemplo es que el primero crea un nuevo ámbito en el que cada uno puede tener para almacenar las variables para cada elemento coincidente, de lo contrario, deben trabajar de forma idéntica. – gnarf
¡Estaba equivocado! Gracias :) – Trip