jQuery slideUp().remove() doesn't seem to show

2019-01-30 17:01发布

I have this line of JavaScript and the behavior I am seeing is that the selectedLi instantly disappears without "sliding up". This is not the behavior that I expected.

What should I be doing so that the selectedLi slides up before it is removed?

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

5条回答
混吃等死
2楼-- · 2019-01-30 17:27

Using promises you can also wait for multiple animations to get finished, e.g.:

selectedLi.slideUp({duration: 5000, queue: false})
.fadeOut({duration: 3000, queue: false})
.promise().done(function() {
    selectedLi.remove()
})
查看更多
在下西门庆
3楼-- · 2019-01-30 17:34

The simplest way is calling the "remove()" function inside slideUp as a parameter like others have said, as this example:

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

It is a must to call it inside the anonymous function() to prevent remove() to be executed before the slideUp has ended. Another equal way is to use the jQuery function "promise()". Better for those who like self-explanatory code, like me ;)

$("#yourdiv").slideUp("normal").promise().done(function() {
    $(this).remove();
});
查看更多
女痞
4楼-- · 2019-01-30 17:39
selectedLi.slideUp(200, this.remove);
查看更多
迷人小祖宗
5楼-- · 2019-01-30 17:45

You need to be more explicit: rather than saying "this" (which I agree should work), you should do this:

$("#yourdiv").slideUp(1000, function() {
    $(this).remove();
});
查看更多
劫难
6楼-- · 2019-01-30 17:51

Might be able to fix it by putting the call to remove in a callback arg to slideUp?

e.g

selectedLi.slideUp("normal", function() { $(this).remove(); } );
查看更多
登录 后发表回答