2014-04-24 33 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