2010-11-09 13 views
7

Rozważmy następujący fragment:jQuery efekt kulminacyjnym przed usunięciem()

$('.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(); 
... 

chciałbym podkreślić rzeczywisty rząd przed koszu (.remove()) go. Jeśli nie podam pozycji, podświetl działa.

Jak mogę najpierw podświetlić, a następnie usunąć element?

+2

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

Odpowiedz

16

Można korzystać z funkcji oddzwaniania z effect i fadeOut zrobić czynności, gdy pierwsza akcja zakończyła:

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

mówi to " podświetlić _item. Gdy skończysz, znikaj. Gdy skończysz, usuń go. "

+0

Dziękuję za szczegółowe wyjaśnienie. – fabrik

+0

Nie potrzebujesz wywołania zwrotnego do '.effect()'. '.fadeOut()' zostanie automatycznie umieszczony w kolejce do uruchomienia po '.effect()'. – user113716

+0

@patrick Dziękuję za wyjaśnienia - czasami czuję się zagubiony przez kolejkę jQuery ... – lonesomeday

0

trzeba stać w kolejce do .Wykręcić()

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

Yo ushould móc przypisać zwrotnego na wyciszenia:

$('.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(); }); 
    } 
}); 

nadzieję, że to pomaga.

Powiązane problemy