Ответ 1
Возможно ли это устранить, поставив вызов для удаления в аргументе callback для slideUp?
e.g
selectedLi.slideUp("normal", function() { $(this).remove(); } );
У меня есть эта строка JavaScript, и поведение, которое я вижу, заключается в том, что selectedLi
мгновенно исчезает без "скольжения". Это не то поведение, которое я ожидал.
Что я должен делать, чтобы selectedLi
сместился до его удаления?
selectedLi.slideUp("normal").remove();
Возможно ли это устранить, поставив вызов для удаления в аргументе callback для slideUp?
e.g
selectedLi.slideUp("normal", function() { $(this).remove(); } );
Вам нужно быть более явным: вместо того, чтобы говорить "this" (который, как я согласен, должен работать), вы должны сделать это:
$("#yourdiv").slideUp(1000, function() {
$(this).remove();
});
Самый простой способ - вызвать функцию remove() внутри slideUp как параметр, подобный другим, как этот пример:
$("#yourdiv").slideUp("normal", function() {
$(this).remove();
});
Это необходимо, чтобы вызвать его внутри анонимной функции(), чтобы предотвратить удаление(), которое должно быть выполнено до завершения слайд файла. Другим равным способом является использование функции jQuery "prom()". Лучше для тех, кто любит самоочевидный код, как и я;)
$("#yourdiv").slideUp("normal").promise().done(function() {
$(this).remove();
});
Используя promises, вы также можете дождаться завершения нескольких анимаций, например:
selectedLi.slideUp({duration: 5000, queue: false})
.fadeOut({duration: 3000, queue: false})
.promise().done(function() {
selectedLi.remove()
})
selectedLi.slideUp(200, this.remove);