【问题标题】:jQuery Queue - Two Separate Animations on Same ObjectjQuery Queue - 同一对象上的两个单独的动画
【发布时间】:2013-05-02 15:03:54
【问题描述】:

我正在制作一个允许站点范围通知的小插件。

通知(带有默认选项)将等待(延迟)6 秒,然后淡出超过 1 秒。

但是!手动单击它会使其立即淡出 0.5 秒。

这是我的问题。

点击通知会使其在淡出前等待 6 秒延迟。我希望它是即时的。我意识到这应该通过队列来完成,但我无法理解它们。到目前为止,这是我所拥有的:

$('#wpnotify')
    .click(function() {
        $(this).fadeOut(this.options.manualFade.dur, function() {
        $(this).remove();
    });
});


if (this.options.autoFade != false)
    $('#wpnotify')
        .delay(this.options.autoFade.delay, 'autoclose')
        .queue('autoclose', function(next) {
            $(this).fadeOut(this.options.autoFade.dur, function() {
                $(this).remove();
                    next();
                });
         }).dequeue('autoclose');

【问题讨论】:

    标签: jquery animation queue fade


    【解决方案1】:

    使用.stop(true,true) 停止队列并立即结束。

    $('#wpnotify')
        .click(function() {
            $(this).stop(true,true).fadeOut(this.options.manualFade.dur, function() {
                $(this).remove();
            });
        });
    

    【讨论】:

    • 是在队列旁边还是可以代替它来?
    • 我不认为你可以执行一个忽略队列的动画,如果队列中已经有东西,它必须在队列中的下一个项目运行之前完成。
    • 我刚刚禁用了队列,所以它回到了默认的 fx 队列 - 这非常有效!谢谢 :) 让我在 2 分钟内接受
    • 哦,我明白了,我什至没有注意到您使用的自定义队列。 .stop("autoclose",true,true); 会阻止它。
    猜你喜欢
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-29
    相关资源
    最近更新 更多