2015-04-07 73 views
0

我有一個div我想要顯示,當我點擊一個<a>標籤,我想等待10秒鐘之前重定向,但它只是顯示我的div和重定向而無需等待。jquery沒有正常延遲點擊<a>標籤

HTML代碼:

<a class="clickHereToDisplay" href="http://www.google.com">Click here to go</a>" 
<div class="hiddenDiv"></div> 

Jquery的代碼:

<script> 
$(document).ready(function(){ 
window.setTimeout(function(){ 

$(".clickHereToDisplay").click(function(){ 
    $('.hiddenDiv').text('THE TEXT I WANT TO DISPLAY WHEN THE HREF IS CLICKED'); 
    $('.hiddenDiv').show(); 
    }); 
    }),10000; 
}); 
</script> 

回答

1

問題是瀏覽器使用在href立即重新定向。你想是這樣的:

<a class="clickHereToDisplay" href="#" onclick="timedRedirect()">Click here to go</a>" 
<div class="hiddenDiv"></div> 

那麼你的javascript:

var timedRedirect = function() { 
    $('.hiddenDiv').text('THE TEXT I WANT TO DISPLAY WHEN THE HREF IS CLICKED'); 
    $('.hiddenDiv').show(); 
    window.setTimeout(function(){ 
     window.location.href = "http://www.google.com" 
    }),10000); 
}; 

另外一個說明;沒有什麼能阻止用戶在接下來的10秒內做其他事情,所以確保你處理你不想發生的用戶流(像其他事件處理程序等)。

+0

關鍵是你說的關於href(href =「#」)。 這是改進後的工作腳本。 – MQSJ23

1

您需要在點擊處理程序中使用超時。

在點擊處理程序中,首先需要顯示隱藏的div並使用計時器來延遲重定向,爲此需要阻止點擊的默認操作,然後在超時處理程序中手動設置位置。

$(document).ready(function() { 
    $(".clickHereToDisplay").click(function (e) { 
     e.preventDefault(); 
     $('.hiddenDiv').text('THE TEXT I WANT TO DISPLAY WHEN THE HREF IS CLICKED').show(); 
     window.setTimeout(function() { 
      window.location = e.currentTarget.href; 
     }, 10000); 
    }); 
});