【问题标题】:jQuery how to bind after unbindjQuery取消绑定后如何绑定
【发布时间】:2012-06-16 12:45:37
【问题描述】:

我有一个超级简单的 id 标签,它有点击事件。我已经使用 JQuery unbind 来禁用某些场景的点击,当我尝试使用下面的代码再次绑定时,点击事件永远不会被触发。

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

点击处理程序如下所示:

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

有人可以帮我解决我做对/错的事情吗?

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

更新:

据我了解,bind 和 on 都需要一个被执行的回调函数。这对我来说将是一个问题,因为我不想执行点击事件,而只是启用点击事件并准备好点击发生。

是否可以只禁用和启用点击事件而无需传递回调函数?

【问题讨论】:

  • 你在点击处理程序上执行什么代码?
  • 点击处理程序在前端执行大量业务逻辑。请参阅我更新的问题。

标签: jquery


【解决方案1】:

先声明函数:

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

当你需要的时候,在点击事件上绑定点击功能

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

稍后用 off 解除绑定:

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

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

【讨论】:

  • 可能想修正复制/粘贴错字...您的“关闭”示例使用“打开”
  • hmm.... 我只想启用或禁用此 id 上的点击事件,并将我的业务逻辑保留在其他地方。
  • 我没有点击功能,我只有这样的 $("#id1").click(function () { .....}
  • 是的,但是...不是这样,您可以使用 $("#id1").click(function () { .....} 定义函数并在需要时绑定和取消绑定.您必须定义每次单击时要执行的功能,每次都可能是另一个功能。我将编辑我的答案
【解决方案2】:

我刚刚遇到了一个类似的问题,需要取消绑定 on("click"),我可以让它停止的唯一方法是使用我定义的计数器上的开关。也许这种方法会有所帮助。

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

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

【讨论】:

    【解决方案3】:

    给定的解决方案解决了我的问题,你也应该试试这个。

    $(function() {
        bindratings();
    });
    
    function bindratings() {
        var selector = $(".class_name");
        selector.bind("click", function() {
            selector.unbind("click");
    
            // write your code here
    
            setTimeout('bindratings();', 100);
        });
    }
    

    【讨论】:

      猜你喜欢
      • 2012-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多