Mam tę linię JavaScript, a zachowanie, które widzę, jest takie, że selectedLi
natychmiast znika bez „zjeżdżania”. Nie jest to zachowanie, którego się spodziewałem.
Co mam zrobić, aby selectedLi
slajdy się podniosły, zanim zostaną usunięte?
selectedLi.slideUp("normal").remove();
javascript
jquery
animation
Eric Schoonover
źródło
źródło
Musisz być bardziej wyraźny: zamiast mówić „to” (co, jak się zgadzam, powinno działać), powinieneś zrobić to:
$("#yourdiv").slideUp(1000, function() { $(this).remove(); });
źródło
$("#yourdiv")
zamiast$(this)
jest całkowicie nadmiarowe i nie dlatego ten kod rozwiązuje problem OP. Ten kod rozwiązuje problem, ponieważ używacomplete
wywołania zwrotnego.Najprostszym sposobem jest wywołanie funkcji „remove ()” wewnątrz slideUp jako parametru, jak powiedzieli inni, jak w tym przykładzie:
$("#yourdiv").slideUp("normal", function() { $(this).remove(); });
Konieczne jest wywołanie go wewnątrz funkcji anonimowej (), aby zapobiec wykonaniu metody remove () przed zakończeniem slideUp. Innym równym sposobem jest użycie funkcji jQuery „promise ()”. Lepsze dla tych, którzy lubią zrozumiały kod, jak ja;)
$("#yourdiv").slideUp("normal").promise().done(function() { $(this).remove(); });
źródło
Korzystając z obietnic, możesz również poczekać na ukończenie wielu animacji, np .:
selectedLi.slideUp({duration: 5000, queue: false}) .fadeOut({duration: 3000, queue: false}) .promise().done(function() { selectedLi.remove() })
źródło
selectedLi.slideUp(200, this.remove);
źródło