按guid删除事件处理程序



我可以得到关于一个元素的所有事件处理程序的信息。

$._data($('#element_id')[0], "events");

这给了我每个事件处理程序的记录。

0: {type: "change", origType: "change", data: null, guid: 315, handler: ƒ, …}

我想使用这个指南来删除一个特定的事件处理程序。

我知道另一种选择是使用回调函数的名称或名称空间,但这个问题是关于使用guid的。

$.prototype.unbindByGuid = function (guid) {
$(this).each(function (index, element) {
var handlers = [];
$.each($._data(element, "events"), function (key, value) {
$.each(value, function (index, value) {
if(value.guid == guid) handlers.push({eventType: key, handler: value.handler});
});
});
handlers.forEach(function (handler) { $(element).unbind(handler.eventType, handler.handler); });
});
}

最新更新