jQuery .each()
ist nimmt eine Rückruffunktion und wendet sie auf jedes Element in dem Objekt jQuery.
etwas wie folgt vorstellen:
$('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'});
});
});
Sie können auch das Ergebnis nur speichern und arbeiten daran statt:
$('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'});
});
ich auch, dass stattdessen vorschlagen würde, wie die CSS von mofiying, dass Sie nur Fügen Sie eine Klasse zu Ihrer geklonten li wie folgt hinzu:
$(this).closest('li').clone().addClass("new-item").appendTo('#cart ul');
Dann richten Sie einige Stile wie:
Hmm .. das 2. Beispiel würde immer noch asynchron abfeuern und würde in den meisten Fällen nicht funktionieren, wenn sie den Callback * nach dem * appendTo benötigen – Trip
Ich bin mir nicht sicher, Sie verstehen, was asynch bedeutet @Trip --- All das Code oben ist synch. In diesem Code gibt es keine asynchronen Aufrufe. Auch der Rückruf innerhalb der einzelnen ist noch synchron, es wird sofort aufgerufen. Der einzige Unterschied in beiden Beispielen besteht darin, dass der erste einen neuen Bereich in jedem Bereich erstellt, in dem Sie Variablen für jedes angepasste Element speichern können, andernfalls sollten sie identisch funktionieren. – gnarf
Ich habe mich geirrt! Danke :) – Trip