还原jQuery off()删除的事件

还原jQuery off()删除的事件,jquery,Jquery,我可以使用$('ul.links a').off()从一组元素中删除所有事件 如何恢复所有已删除的事件 我不希望在最初应用事件时使用命名函数,然后使用on()单独添加这些命名函数。也许在应用off()之前,我可以将所有事件保存在data()变量中?有多个选项。下面是一个回答您的问题的例子: //to store events $('ul.links a').each(function () { $(this).data('events', $.extend(true, {}, $._da

我可以使用
$('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);
    });
});
注意,
$。\u data()
不是一个公开支持的方法,这意味着它可以在不事先通知的情况下从一个版本更改到另一个版本


也就是说,更推荐的选择是在事件处理程序中设置一些标志来处理逻辑。

我计划使用
data()
(),而不是
$。\u data()
。前者不是一种公共支持的方法,可以在不事先通知的情况下从一个版本更改到另一个版本吗?
$。\u data()
仅在内部使用,但这是我知道的检索绑定到任何特定元素的jq事件的唯一方法。事实上,jQuery中有三种
data
方法类型,
$.fn.data
(公共)
$.data
(内部)和
$。\u data
(内部)明白了!将使用flag方法。只是一个观察,但指示使用
$('submitBtn').prop('disabled',true)
禁用事件。就我所知,它不起作用。
.prop('disabled',true)
用于设置布尔属性disbaled。具有禁用属性的元素不响应任何(鼠标?)事件。但这仅适用于
类型的元素:作为文本框、文本区域、按钮等输入
。。。锚定标记(A)上禁用的属性无效。从w3c文档:
以下元素支持禁用属性:按钮、输入、OPTGROUP、选项、选择和文本区域。