setTimeout 不适用于 window.location?

发布于 2024-09-05 16:27:44 字数 546 浏览 8 评论 0原文

我尝试在更改窗口位置时实现丰富的闪光效果,但是有一个小问题,我无法解决。

请查看脚本

 $(document).ready(function(){

            $('a.flash').click(function(e) {
                e.preventDefault();
                $('body').fadeOut(1500);
                setTimeout("", 1500);
                window.location=this.href;
            }); 
      });

window.location=this.href 必须在 1500 毫秒后完成,但它没有发生。 你能解释一下为什么吗? 奇怪的是,当我尝试编写 alert("something"); 而不是 window.location=this.href 时,它工作正常。你能解释一下为什么吗?

谢谢

i try to rich flash like effect when changing window location, but there is a small problem, i can't solve.

look at the script please

 $(document).ready(function(){

            $('a.flash').click(function(e) {
                e.preventDefault();
                $('body').fadeOut(1500);
                setTimeout("", 1500);
                window.location=this.href;
            }); 
      });

window.location=this.href must be done after 1500ms, but it doesn't happen.
could you explain why?
what is strange, when i try to write alert("something"); instead of window.location=this.href, it works fine. Could you explain why?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

抱着落日 2024-09-12 16:27:44
$(document).ready(function(){

            $('a.flash').click(function(e) {
                var el = this;
                e.preventDefault();
                $('body').fadeOut(1500);
                setTimeout( function() {  location=el.href }, 1500 );
            }); 
      });

您应该提供一个回调函数作为 setTimeout 的第一个参数,该函数在 1500 毫秒后调用。

$(document).ready(function(){

            $('a.flash').click(function(e) {
                var el = this;
                e.preventDefault();
                $('body').fadeOut(1500);
                setTimeout( function() {  location=el.href }, 1500 );
            }); 
      });

You're supposed to provide a callback function as the first param of setTimeout which is invoked after 1500 ms.

清风挽心 2024-09-12 16:27:44

setTimeout 与其他语言中的 Thread.sleep(1500); 不同。 setTimeout 安排一段代码在将来的某个时刻运行,并且不会阻塞。执行立即传递 setTimeout 调用并继续。

第一个参数是对函数的引用或将要计算的字符串。

请参阅 meder 的答案,了解使用 setTimeout 的适当方法,避免使用匿名函数进行评估。

setTimeout is not equivalent to a Thread.sleep(1500); in other languages. setTimeout schedules a piece of code to be run at some point in the future and does not block. Execution immediately passes the setTimeout call and continues on.

The first parameter is either a reference to a function or a string that will be evaluated.

See meder's answer for the appropriate way to use setTimeout, avoiding evaluation using an anonymous function.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文