У меня есть эта строка JavaScript, и поведение, которое я наблюдаю, заключается в том, что selectedLi мгновенно исчезает без "скольжения вверх". Это не то поведение, которого я ожидал.
Что мне делать, чтобы selectedLi выдвинулся перед тем, как его вынуть?
selectedLi.slideUp("normal").remove();



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Можно ли это исправить, поместив вызов remove в аргумент обратного вызова для slideUp?
например
selectedLi.slideUp("normal", function() { $(this).remove(); } );
selectedLi.slideUp(200, this.remove);
Я тестировал - не удаляет элемент после скольжения вверх.
Фактически скрывает элемент, но не удаляет его из DOM.
Вы должны быть более точными: вместо того, чтобы говорить «это» (которое, я согласен, должно работать), вам следует сделать следующее:
$("#yourdiv").slideUp(1000, function() {
$(this).remove();
});
ИЗВИНЕНИЕ = я забыл удалить свой идентификатор, должно быть: $ ('# yourdiv'). SlideUp (1000, function () {$ ('# yourdiv'). Remove ();});
Использование $ (this) вместо $ ("# yourdiv") более оптимизировано, поскольку jQuery не нужно искать узел.
Использование $("#yourdiv") вместо $(this) полностью избыточно, и не поэтому этот код решает проблему OP. Этот код устраняет проблему, поскольку использует обратный вызов complete.
Самый простой способ - вызвать функцию «remove ()» внутри slideUp в качестве параметра, как говорили другие, как в этом примере:
$("#yourdiv").slideUp("normal", function() {
$(this).remove();
});
Его необходимо вызывать внутри анонимной функции (), чтобы предотвратить выполнение remove () до завершения slideUp. Другой равноправный способ - использовать функцию jQuery «обещание ()». Лучше для тех, кто любит понятный код, как я;)
$("#yourdiv").slideUp("normal").promise().done(function() {
$(this).remove();
});
Используя обещания, вы также можете дождаться завершения нескольких анимаций, например:
selectedLi.slideUp({duration: 5000, queue: false})
.fadeOut({duration: 3000, queue: false})
.promise().done(function() {
selectedLi.remove()
})
Обратите внимание, что "медленная" и "быстрая" - единственные скорости. Другие скорости должны быть либо в миллисекундах, либо по умолчанию они будут равны 400. keyframesandcode.com/resources/javascript/deconstructed/jque ry /…