web-dev-qa-db-fra.com

jQuery slideUp (). remove () ne semble pas montrer l'animation slideUp avant la suppression

J'ai cette ligne de JavaScript et le comportement que je vois est que le selectedLi disparaît instantanément sans "glisser vers le haut". Ce n'est pas le comportement que j'attendais.

Que dois-je faire pour que le selectedLi glisse vers le haut avant d'être supprimé?

selectedLi.slideUp("normal").remove();
89
Eric Schoonover

Pourriez-vous y remédier en plaçant l'appel à supprimer dans un argument de rappel vers slideUp?

par exemple

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

Vous devez être plus explicite: plutôt que de dire "ceci" (qui, selon moi, devrait fonctionner), vous devez le faire:

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

La façon la plus simple est d'appeler la fonction "remove ()" dans slideUp comme un paramètre comme d'autres l'ont dit, comme cet exemple:

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

Il est indispensable de l'appeler dans la fonction anonyme () pour empêcher l'exécution de remove () avant la fin du slideUp. Une autre manière égale consiste à utiliser la fonction jQuery "promise ()". Mieux pour ceux qui aiment le code explicite, comme moi;)

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

En utilisant des promesses, vous pouvez également attendre la fin de plusieurs animations, par exemple:

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