2014-04-24 35 views
0

考慮下面的代碼:如何使用jQuery重新啓用div上的點擊事件?

if ($selector.html().indexOf("radio") > 0) { 

     if ($oldSelected != null) { 
      // enable clicks on old selected radio button 
      $oldSelected.children().bind('click', function() { return true; }); 
     } 

     // disable click on selected 
     $selector.children().bind('click', function() { return false; }); 
     $oldSelected = $selector; 
    } 

的禁用代碼工作正常。一旦執行該元素不再可點擊。但是,當試圖重新啓用點擊事件時,什麼都不會發生。

對此提出建議?

+0

使用http://api.jquery.com/on/和http://api.jquery.com/off/ –

回答

0

你只是反覆綁定點擊處理程序。你需要unbind()那些你不想活躍的人。

試試這個:

$oldSelected.children().unbind('click').bind('click', function() { return true; }); 

關於第二個想法,unbind('click')可能是你所需要的,如果有你的點擊處理沒有其他邏輯。

+0

正如我所提到的禁用點擊工作正常。你有什麼建議的例子嗎? – ElHaix

+0

禁用工作,因爲您有一個單擊處理程序返回false。該啓用不起作用,因爲您仍然有一個返回false的點擊處理程序。 '.bind('click',newfunction)'不會刪除任何現有的點擊處理程序。 –

+0

那麼爲什麼'.bind('click',function(){return true;}'不只是重新啓用可點擊事件?我是不是改變這個點擊處理程序返回true? – ElHaix

0

試着這麼做:

var handler = function() { 
    // do some stuff 
}; 

// First 
el.bind('click', handler); 

// Later on... 
el.unbind('click', handler); 

記住,這樣以後你可以取消綁定保存回調。 Unbind docs