2014-06-18 72 views
-1

以下代碼不起作用。它刪除禁用的類,但div不能再次點擊。我的意思是功能只能工作一次。on('click')在關閉('click')後不起作用

$(document).ready(function(){ 

$('div.downloadbutton').on('click', function(e) { 
     $('div.downloadbutton').off('click'); 
     $('div.downloadbutton').not(this).addClass('disabled', {duration:500}); 

     setTimeout(function(){ 
      $('div.downloadbutton').on('click'); 
      $('div.downloadbutton').not(this).removeClass('disabled', {duration:500}); 
     }, 3000); 
    }); 
}); 
+2

您還需要提供一個功能'上(「點擊」)' - 它不會只替換以前連接的事件處理程序。 –

+0

不確定你爲什麼被低估?你解釋了這個問題,你的代碼......人們還想要什麼? –

+0

@RoryMcCrossan我完全不理解它。那麼我怎樣才能讓這個例子工作? /嗯,這個問題可能是因爲人們太愚蠢而無法在這裏問... – user2104742

回答

2

不是綁定/解除綁定事件處理程序,而是嘗試擁有一個可以控制邏輯的狀態變量。事情是這樣的:

var clickDisabled = false; // initial state; allow the click 

$('div.downloadbutton').on('click', function(e) { 
    if (!clickDisabled) { 
     $('div.downloadbutton').not(this).addClass('disabled', { duration:500 }); 
     clickDisabled = true; 
     setTimeout(function() { clickDisabled = false; }, 3000); 
    }; 
}); 

Example fiddle

+0

你今天搖擺! - +1 – PeterKA