2010-11-09 4 views
7

Considérons l'extrait suivant:jQuery effet de surbrillance avant 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(); 
... 

Je voudrais souligner la ligne réelle avant saccage (.remove()) il. Si je ne sais pas .remove(), mettez en surbrillance le travail.

Comment puis-je surligner d'abord, puis retirer l'élément?

+2

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

Répondre

16

Vous pouvez utiliser la fonctionnalité de rappel de effect et fadeOut de faire des actions lorsque la première action est terminée:

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

Cela dit " mettez en surbrillance _item Lorsque cela est terminé, éteignez-le.Lorsque c'est terminé, retirez-le. "

+0

Merci pour l'explication détaillée. – fabrik

+0

Vous n'avez pas besoin du rappel de '.effect()'. Le '.fadeOut()' sera automatiquement mis en file d'attente pour s'exécuter après '.effect()'. – user113716

+0

@patrick Merci pour la clarification - Je suis parfois confus par la file d'attente jQuery ... – lonesomeday

0

Vous devez faire la queue le .remove()

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

Yo ushould être en mesure d'attribuer un rappel sur le 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(); }); 
    } 
}); 

espérons que cette aide.