2010-11-09 13 views
7

Si consideri il seguente frammento di codice:jQuery effetto di evidenziazione prima remove()

$('.remove_item').click(function(e) { 
    var _item = $(this).closest('.cart_item'); 
    if(confirm('Biztosan törölhetem a terméket a kosárból?')) { 
     _item.effect('highlight', {}, 100).stop().fadeOut('fast'); 
     _item.remove(); 
... 

vorrei evidenziare la riga reale prima di cestinare (.remove()) esso. Se non lo faccio .remove(), evidenziare che funziona.

Come posso evidenziare prima, quindi rimuovere l'elemento?

+2

vedere qui: http://stackoverflow.com/questions/510761/jquery-delete-dom-element-after-fading-out – mamoo

risposta

16

È possibile utilizzare la funzionalità di richiamata di effect e fadeOut di fare azioni quando la prima azione è terminata:

_item.effect('highlight', {}, 100, function(){ 
    $(this).fadeOut('fast', function(){ 
     $(this).remove(); 
    }); 
}); 

Questo dice " evidenziare _item. Quando questo è finito, svanire. Quando questo è finito, rimuoverlo. "

+0

Grazie per la spiegazione dettagliata. – fabrik

+0

Non è necessario il callback a '. Effect()'. '.fadeOut()' verrà automaticamente messo in coda per essere eseguito dopo '.effect()'. – user113716

+0

@patrick Grazie per il chiarimento - a volte mi confondo con la coda di jQuery ... – lonesomeday

0

È necessario fare la fila alla .Rimuovere()

_item.queue(function() { $(this).remove(); }); 
5

Yo ushould essere in grado di assegnare un callback sulla fadeOut:

$('.remove_item').click(function(){ 
    if(confirm('Biztosan törölhetem a terméket a kosárból?')) 
    { 
     $(this).closest('.cart_item').fadeOut(500, function() { $(this).remove(); }); 
    } 
}); 

speranza che questo aiuti.