2013-01-16 54 views
1

我有下面的代碼:停止超時JQuery的

<script type="text/javascript"> 
$("#contact_min").toggle(function(){ 
    $("#contact_min").animate({ 
    height: "300px" 
    }, 1000); 
$(".arrow").html("&#x25bc;") 
$(".popupcontent").html('foobar') 
}, 
function(){ 
    $("#contact_min").animate({ 
    height: "28px" 
    }, 1000); 
$(".arrow").html("&#x25B2;") 
$(".popupcontent").html("") 
}); 
</script> 

<script type="text/javascript"> 
$(document).ready(function(){ 
    setTimeout(function(){ 
    $("#contact_min").animate({ 
    height: "300px" 
    }, 1000); 
$(".arrow").html("&#x25bc;") 
$(".popupcontent").html('foobar') 
     }, 25000); 

}); 
</script> 

這完美的作品,您可以點擊div和它打開,或者你可以等待25秒,它打開。但是當你點擊它時,等待25秒,你必須點擊兩次再次關閉它。這是因爲超時仍會打開框,即使您已經點擊它。單擊該框後是否有辦法停止超時,以便該框在25秒後不會打開?

+0

[如何制止/重寫Jquery TimeOut函數?](http://stackoverflow.com/questions/2578628/how-to-stop-override-a-jquery-timeout-function)。 – Vucko

+0

請嘗試http://api.jquery.com/stop/ – Rajiv007

回答

5

使用clearTimeout()

var tOut = setTimeout(function(){ 
         $("#contact_min").animate({ 
           height: "300px" 
         }, 1000); 
         $(".arrow").html("&#x25bc;") 
         $(".popupcontent").html('foobar') 
     }, 25000); 

然後清除此超時像這樣做,clearTimeout(tOut);

+0

完美地工作,謝謝 – AgeDeO

0

您只要致電clearTimeout與存儲的值以停止超時

clearTimeout(timeout);