2

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

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

点击处理程序如下所示:

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

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

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

更新:

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

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

4

3 回答 3

3

首先声明函数:

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

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

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

并在稍后解除绑定:

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

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

于 2012-06-16T12:55:52.560 回答
0

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

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

    switch (cntr) {
       case 0:
           something();
           break;
       case 1:
           something();
           break;
       default:
           return;
    }
});
于 2017-02-11T02:52:56.723 回答
0

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

$(function() {
    bindratings();
});

function bindratings() {
    var selector = $(".class_name");
    selector.bind("click", function() {
        selector.unbind("click");

        // write your code here

        setTimeout('bindratings();', 100);
    });
}
于 2019-08-20T04:39:42.390 回答