如何在JQuery中绑定,解除绑定和重新绑定(单击)事件

在2周前在这里问了同样的问题之后,我终于找到了“解决方案”。 这就是我回答自己问题的原因。 ;)

如何在JQUERY中绑定,组合和重新绑定事件?

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

$(document).on('click', 'a#button', function(){ $(this).after(' hello'); $('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()或……!

看文档 !

这是一个尝试它并试验它的小提琴 !

请享用!

一个更简单的解决方案是在对象中添加一个类,如果你想取消绑定它,那么删除这个类来重新绑定ex;

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

此函数扩展jQuery以包含一个附加事件处理程序的运算符,与.on相同。 另外,它可以防止给定处理程序的多个实例附加到选择器。

请注意,删除和重新附加事件处理程序会更改它们附加的顺序。

 (function ($) { $.fn.reBind = function(events, handler) { return this.off(events, handler).on(events, handler); }; }(jQuery));