.animate()和.remove()不能很好地融合在一起

时间:2014-09-05 17:44:02

标签: jquery jquery-ui jquery-animate appendto

我正在尝试解除我之前附加到正文的通知面板。

$('#notify-panel').animate({top: -250},{duration: 1000, easing: 'easeInOutBack'});

这本身很有效,但我的目标是移动div对象,所以我添加了一个.remove()语句,在动画完成后删除它。

$('#notify-panel').animate({top: -250},{duration: 1000, easing: 'easeInOutBack'});
$('#notify-panel').remove();

当我运行它时,面板将从主体中移除,但动画不会被执行,图层就会消失。所以我添加了.remove()作为回调的一部分。

$('#notify-panel').animate({top: -250},{duration: 1000, easing: 'easeInOutBack'}, {callback: function(){ $(this).remove(); }});

此网络与前一步骤相同,其中图层是从未动画删除的。所以我的问题是,如果我想动画div图层然后删除它,我将如何去做。显然,我做错了。

2 个答案:

答案 0 :(得分:3)

这可以由reading the manual解决。使用其中一个:

$('#notify-panel').animate({
    top: -250
}, {
    duration: 1000,
    easing: 'easeInOutBack',
    complete: function() {
        $(this).remove();
    }
});

或者:

$('#notify-panel').animate({
    top: -250
}, {
    duration: 1000,
    easing: 'easeInOutBack'
}, function() {
    $(this).remove();
});

答案 1 :(得分:1)

首先,您错过了值和px周围的引号。

我会这样写:

$('#notify-panel').animate({
    top: '-250px'
}, {
    easing: 'easeInOutBack'
}, 1000, function() {
    $(this).remove();
});