2012-06-16 50 views
2

我有一个超级简单的id标签,它有点击事件。我已经使用JQuery unbind来禁用某些场景的点击,并且当我尝试再次使用低于click事件的代码绑定时,将永远不会被解雇。jQuery如何绑定后解除绑定

disableButton() 
{ 
    $('#id1').unbind('click'); 
} 
     ....... 
enableButton() 
{ 
    $('#id1').bind('click'); 
} 

Click处理程序看起来象下面这样:

$("#id1").click(function() { 
    //apply some complex front end business rules 
} 

可能有人请帮助我,我在做什么正确/错误?

我只是想启用或禁用点击,有没有更简单的方法来实现这一点?

UPDATE:

从我的理解都结合和需要回调函数被执行。这将成为我的情况,因为我不想执行点击事件,但只是启用点击事件,并准备点击发生问题。

是不是可以只是禁用和启用点击事件,而不必传递回调函数?

+1

你在点击处理程序上执行什么代码? – Sarfraz

+0

单击处理程序在前端执行大量业务逻辑。请参阅我更新的问题。 –

回答

1

先申报的功能:

function clickFunction(){ 
//your code here, to be execute on click 
} 

当你需要它,绑定上的点击事件

$('#id1').on("click", clickFunction()) 

点击功能,后来与关解除绑定:

$('#id1').off("click", clickFunction()) 

当你想再次绑定它:$('#id1').on("click", clickFunction())

+1

可能想修复复制/粘贴错误...你的“关闭”示例使用'on' – Exupery

+0

//你的代码在这里发生了什么? –

+0

要执行的代码点击 –

0

我刚刚遇到类似的问题,需要解除on(“click”),唯一可以停止的方法是在我定义的计数器上使用开关。也许这种方法可能会有所帮助。

$(".images").on("click", function() { 
    console.log(this.id); 

    switch (cntr) { 
     case 0: 
      something(); 
      break; 
     case 1: 
      something(); 
      break; 
     default: 
      return; 
    } 
});