我可以使用 $('ul.links a').off() 删除一组元素中的所有事件
。
如何恢复所有已删除的事件?
我不想在最初应用事件时使用命名函数,然后使用 on()
单独添加这些命名函数。也许在应用 off()
之前,我可以将所有事件保存在 data()
变量中?
最佳答案
有不止一种选择。以下是回答您的问题的一个说明:
//to store events
$('ul.links a').each(function () {
$(this).data('events', $.extend(true, {}, $._data(this, 'events')));
});
//unbind events
$('ul.links a').off();
// to rebind events
$('ul.links a').each(function () {
var $self = $(this);
$.each($(this).data('events'), function (_, e) {
$self.on(e[0].type, e[0].handler);
});
});
请注意,$._data()
不是公开支持的方法,这意味着它可以在不事先通知的情况下从一个版本更改到另一个版本。
也就是说,更推荐的选项是在事件处理程序中设置一些标志来处理逻辑。
关于jquery - 恢复由 jQuery off() 删除的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30152418/