jQuery .each()
prende una funzione di callback e lo applica ad ogni elemento nell'oggetto jQuery.
Immaginate qualcosa di simile:
$('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'});
});
});
Si potrebbe anche solo memorizzare il risultato e lavorare su di esso, invece:
$('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'});
});
Vorrei anche suggerire che invece di mofiying il CSS come quello appena aggiungi una classe al tuo Li clonato in questo modo:
Quindi imposta alcuni stili come:
.new-item img, .new-item li { height: 40px; width: 40px; }
.new-item h5 { display: none }
Hmm ... il secondo esempio continuerebbe a sparare in modo asincrono e non funzionerebbe nella maggior parte dei casi quando avevano bisogno che il callback si verificasse * dopo * l'appendice – Trip
Non sono sicuro di capire cosa significa asynch @Trip --- Tutto ciò il codice sopra è la sincronizzazione. Non ci sono chiamate asincrone in questo codice. Anche il callback all'interno di ciascuno è ancora sincronizzato, viene chiamato immediatamente. L'unica differenza in entrambi gli esempi è che il primo crea un nuovo ambito all'interno di ciascuno che è possibile memorizzare variabili per ciascun elemento abbinato, altrimenti dovrebbero funzionare in modo identico. – gnarf
Ho sbagliato! Grazie :) – Trip