【问题标题】:.animate() and .remove() not playing well together.animate() 和 .remove() 不能一起玩
【发布时间】:2014-09-05 17:44:02
【问题描述】:

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

$('#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 层设置动画然后将其删除,我将如何去做。显然,我做错了什么。

【问题讨论】:

  • jquery-ui 页面上的示例很好地演示了所有这些东西......这些示例无法解决您在做什么?

标签: jquery jquery-ui jquery-animate appendto


【解决方案1】:

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();
});

【讨论】:

    【解决方案2】:

    首先,您缺少值和 px 周围的引号。

    我会这样写:

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

    【讨论】:

    • px 不是必需的。
    • 你混合了.animate()这两种写法,你确定它有效吗?
    猜你喜欢
    • 1970-01-01
    • 2010-10-04
    • 2010-10-16
    • 2018-12-07
    • 1970-01-01
    • 1970-01-01
    • 2013-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多