jquery - 恢复由 jQuery off() 删除的事件

标签 jquery

我可以使用 $('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/

相关文章:

jquery - 使用 jquery prev next 按钮循环无序列表

javascript - 从文本框输入并添加到列表中不起作用

javascript - Bootstrap 3 中的导航栏下拉菜单

javascript - 带循环的 jQuery 自定义 slider 创建

javascript - 定位元素但确保它仍在屏幕上

javascript - 拖放重叠点

javascript - .length 仅在 setTimeout 之后未定义

javascript - 导航按钮未重置为非事件状态

jquery - 如何在提交表单时使用 JQuery Ajax 发送请求而不重新加载页面

javascript - 如何让控制台在后台运行脚本?