jQuery .unload() 忽略淡出并跳过

Posted

技术标签:

【中文标题】jQuery .unload() 忽略淡出并跳过【英文标题】:jQuery .unload() ignores fadeOut and skips away 【发布时间】:2011-07-12 02:50:30 【问题描述】:

首先,对于双重问题,我感到抱歉,但我觉得这是一种相当不同的方式。

我有:

$(document).ready(function()
        $('#container').fadeOut(0);
        $('#container').fadeIn(500);

        $(window).unload(function()
            alert("Hello.");
            $('#container').fadeOut(500);
        );
    );

它应该通过淡入显示页面,并通过淡出使其卸载。虽然,当我退出页面或提交其中的表单时,我只看到警报,但在我按 OK 后,页面就消失了,下一个出现了。不执行淡入淡出。

我该如何解决这个问题?

【问题讨论】:

更好:$('#container').hide().fadeIn(500); 您需要的是同步淡出。 fadeOut 单独不会这样做,因为它是异步的。 【参考方案1】:

卸载中调用的任何内容都需要同步。我相信fadeOut 方法会调用许多异步回调。因此,当您调用fadeOut 时,会设置一些回调以供稍后制作动画。但是,卸载不会等待。

查看this question 自行构建动画。

【讨论】:

@Jordan 问题是:“我该如何解决这个问题?” 应该可以,但是我怎样才能让动画只在需要卸载时才执行呢?将动画放在卸载调用中会得到相同的结果。 我不知道如何使动画同步工作。我认为您将不得不编写自己的函数来改变不透明度。 是的,但我仍然需要一种方法来捕捉页面何时需要卸载,而无需实际卸载,直到我完成为止。 您在传递给unload 的函数中的任何内容都将按顺序运行。所以只要你不调用异步函数,你就不用担心它。基本上,您需要按顺序排列这些。$('#container').css('opacity','0.9') 每一个都具有较小的不透明度。不过,您应该将 jQuery 元素缓存在一个变量中,这样您就不会每次都遍历 DOM。【参考方案2】:

现在有一个 [, complete ] 回调(1.0+):

http://api.jquery.com/fadeOut/#fadeOut-duration-complete

【讨论】:

以上是关于jQuery .unload() 忽略淡出并跳过的主要内容,如果未能解决你的问题,请参考以下文章

使用 Promise 并跳过代码时,Mocha 测试超时,为啥?

选择并跳过 MySQL 结果

使用 ngFor 循环并跳过第 n 个元素

通过 phpmyadmin 导入 csv 或 sql 并跳过 PK?

读取 C 源文件并跳过 /**/ 注释

在访问中提取一系列日期并跳过假期