JavaScript / jQuery:如何在重定向之前正确使用setTimeout

时间:2015-06-29 18:44:26

标签: javascript jquery settimeout

我是JS的新手,希望有人能帮助我。

我正在尝试淡出div,然后等待两秒钟,然后将重定向到另一个页面。

到目前为止,我有以下内容根据需要进行重定向,但我认为我没有正确使用setTimeout,因为重定向总是立即发生,不依赖于我为超时设置的值。

有人能告诉我如何将这个结合起来以便JS在重定向之前等待吗?我想使用setTimeout而不是延迟等,如果可能的话。

setTimeout(function(){ $(that).closest('div.boxBlueOuter').fadeOut(), 2000 });
// redirect to index page
window.location.href = baseURL + '/index.php?lang=' + selectedLang;

非常感谢, 麦克

2 个答案:

答案 0 :(得分:4)

.fadeOut()可以进行回调,这就是它的样子

  

.fadeOut([duration] [,complete])

首先使用fadeout并在回调中超时2秒然后重定向。 这样的事情应该做。

$(that).closest('div.boxBlueOuter').fadeOut(function(){
  setTimeout(function(){
    window.location.href = baseURL + '/index.php?lang=' + selectedLang;
  }, 2000);
});

答案 1 :(得分:1)

遗憾的是,

setTimeout不是实际EcmaScript规范的一部分,因此它的行为在执行环境中可能不一致。

根据This

说 Firefox中的

setTimeout将执行指定延迟后传入的函数。目前,您在延迟2秒后指定淡出。相反,您希望在2秒延迟之后重定向,如此

$(即).closest( 'div.boxBlueOuter')。淡出()

setTimeout(function(){window.location.href = baseURL +'/ index.php?lang ='+ selectedLang;},2000);

我建议使用标准化的东西并避免使用setTimeout。