2013-05-29 20 views
1

我需要做的是在點擊頁面內容時顯示一個按鈕。這個按鈕只需要顯示3秒鐘,然後它必須自動淡出。JS/JQuery - 在短時間內點擊顯示按鈕

下面是用一個例子一的jsfiddle:

http://jsfiddle.net/EuCWp/2/

這裏是jQuery代碼:

$("#container").click(function(){ 
    $("#show").fadeIn().delay(400).fadeOut(); 
}); 

假設紅色框的頁面內容中,被連接的單擊事件。綠色框是按鈕。

問題是,如果我一直按住紅色方塊,綠色按鈕應該保持可見,換句話說,每次點擊紅色方塊時,延遲都需要重新設置爲0。在我的示例中沒有發生這種情況,你可以看到,如果你點擊3次在一排紅色的框,你會得到這個behavioir

show, hide, show, hide, show, hide 

代替

show, keep showed, keep showed, hide 

有什麼建議?在此先感謝您的幫助,最好的問候


編輯:

我也想保持該按鈕打開,同時用鼠標..徘徊我怎麼能得到這個行爲?

再次感謝

回答

5

您可以使用setTimeoutclearTimeout

(function(){ 
    var timer = 0; 
    $("#container").click(function(){ 
     if (timer) clearTimeout(timer); 
     else $("#show").fadeIn(); 
     timer = setTimeout(function(){ 
      $('#show').fadeOut(); 
      timer = 0; 
     }, 400); 
    }); 
})(); 
+2

這工作http://jsfiddle.net/EuCWp/4/ – thinklinux

+0

感謝dystroy。如果我還需要保持該按鈕在懸停時顯示,該怎麼辦?我怎樣才能做到這一點? – BeNdErR

+1

@BeNdErR我不確定你到底想要什麼。也許[這樣的事情](http://jsfiddle.net/X9agv/)? –

1

我加入一個標誌修改jQuery代碼。

下面是結果:http://jsfiddle.net/EuCWp/5/

這裏是jQuery的新代碼:

var user_click = "on"; 
$("#container").click(function(){ 
    if(user_click=="on") 
    { 
     user_click = "off" 
     $("#show").fadeIn().delay(400).fadeOut(function() { 
      // Animation complete 
      user_click = "on"; 
      }); 
     } 
});