У меня есть эта строка JavaScript, и поведение, которое я наблюдаю, заключается в том, что она selectedLi
мгновенно исчезает, не «скользя вверх». Это не то поведение, которого я ожидал.
Что мне делать, чтобы selectedLi
скользить вверх, прежде чем снимать?
selectedLi.slideUp("normal").remove();
javascript
jquery
animation
Эрик Шуновер
источник
источник
Вы должны быть более точными: вместо того, чтобы говорить «это» (которое, я согласен, должно работать), вам следует сделать следующее:
$("#yourdiv").slideUp(1000, function() { $(this).remove(); });
источник
$("#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() })
источник
selectedLi.slideUp(200, this.remove);
источник