jQuery slideUp (). remove () nie wydaje się pokazywać animacji slideUp przed usunięciem


94

Mam tę linię JavaScript, a zachowanie, które widzę, jest takie, że selectedLinatychmiast znika bez „zjeżdżania”. Nie jest to zachowanie, którego się spodziewałem.

Co mam zrobić, aby selectedLislajdy się podniosły, zanim zostaną usunięte?

selectedLi.slideUp("normal").remove();

Odpowiedzi:



19

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

2
SORRY = zapomniałem usunąć swój identyfikator, powinno to być: $ ('# yourdiv'). SlideUp (1000, function () {$ ('# yourdiv'). Remove ();});
Blake

12
Używanie $ (this) zamiast $ ("# yourdiv") jest bardziej zoptymalizowane, ponieważ jQuery nie musi szukać węzła.
MaximeBernard

Używanie $("#yourdiv")zamiast $(this)jest całkowicie nadmiarowe i nie dlatego ten kod rozwiązuje problem OP. Ten kod rozwiązuje problem, ponieważ używa completewywołania zwrotnego.
Gavin

8

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

3

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()
})

-2
selectedLi.slideUp(200, this.remove);

1
Testowałem - nie usuwa elementu po wysunięciu.
Konstantin Spirin

Skutecznie ukrywa element, ale w rzeczywistości nie usuwa go z DOM.
andreszs
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.