如何在JQuery中绑定、解绑和重新绑定(点击)事件

13

在2个星期前这里问了同样的问题后,我终于找到了“最佳”解决方案。这就是为什么我要回答自己的问题的原因。 ;)

如何在jQuery中绑定、解除绑定和重新绑定事件?


2个回答

13

而这正是完美的解决方案。(至少对我来说是这样。)

$(document).on('click', 'a#button', function(){
    $(this).after('<span> hello</span>');
    $('span').fadeOut(1000);
});

$('a#toggle').toggle(
    function(){
        $(this).text('rebind');
        $('a#button').on('click.disabled', false);
    },
    function(){
        $(this).text('unbind');
        $('a#button').off('click.disabled');
    }
);

".on()"可以实现这个功能。注意:像第一行所示的绑定事件非常重要!使用 ".click()" 或其他方法无法实现此功能!

请查看文档

这里有一个JSFiddle链接,你可以尝试并进行实验!

愉快地使用吧!


1
如果你已经在原问题中回答了它,为什么要重新发布它呢? - Kevin B
1
我猜是因为另一个解决方案也很好用和有用!(更新了旧帖) - John Doe Smith
很棒的答案!这确实帮助我暂时禁用了一个按钮的点击事件。并且,为了进一步强调,点击事件的上下文应该如上面的答案所示! - Con Antonakos
问题:为什么这个有效?我们是在启用/禁用本机点击事件上的“禁用”属性吗? - Con Antonakos
2
重要!对于任何研究此事的人来说,.toggle() 方法在 jQuery 1.8 中已被弃用,并在 jQuery 1.9 中被移除。(来源 - jQuery.com) - Laurence Cooper

3

如果您想解除绑定对象,较为简单且简短的方法是向该对象添加一个类,然后删除该类以重新绑定,例如:

$('#button').click( function(){
   if($(this).hasClass('unbinded')) return;
   //Do somthing
 });

$('#toggle').click(function(){
    $('#button').toggleClass('unbinded');
 });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接