JQuery slideUp(). remove() не показывает анимацию slideUp перед удалением

У меня есть эта строка JavaScript, и поведение, которое я вижу, заключается в том, что selectedLi мгновенно исчезает без "скольжения". Это не то поведение, которое я ожидал.

Что я должен делать, чтобы selectedLi сместился до его удаления?

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

Ответ 1

Возможно ли это устранить, поставив вызов для удаления в аргументе callback для slideUp?

e.g

selectedLi.slideUp("normal", function() { $(this).remove(); } );

Ответ 2

Вам нужно быть более явным: вместо того, чтобы говорить "this" (который, как я согласен, должен работать), вы должны сделать это:

$("#yourdiv").slideUp(1000, function() {
    $(this).remove();
});

Ответ 3

Самый простой способ - вызвать функцию remove() внутри slideUp как параметр, подобный другим, как этот пример:

$("#yourdiv").slideUp("normal", function() {
    $(this).remove();
});

Это необходимо, чтобы вызвать его внутри анонимной функции(), чтобы предотвратить удаление(), которое должно быть выполнено до завершения слайд файла. Другим равным способом является использование функции jQuery "prom()". Лучше для тех, кто любит самоочевидный код, как и я;)

$("#yourdiv").slideUp("normal").promise().done(function() {
    $(this).remove();
});

Ответ 4

Используя promises, вы также можете дождаться завершения нескольких анимаций, например:

selectedLi.slideUp({duration: 5000, queue: false})
.fadeOut({duration: 3000, queue: false})
.promise().done(function() {
    selectedLi.remove()
})

Ответ 5

selectedLi.slideUp(200, this.remove);