【问题标题】:Remove event handler by guid通过 guid 删除事件处理程序
【发布时间】:2021-07-26 12:33:59
【问题描述】:

我可以获得有关此类元素的所有事件处理程序的信息。

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

这为我提供了每个事件处理程序的记录。

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

我想使用此 guid 删除特定的事件处理程序。

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

【问题讨论】:

    标签: javascript jquery events


    【解决方案1】:
    $.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); });
        });
    }
    

    【讨论】:

      猜你喜欢
      • 2010-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-22
      • 1970-01-01
      • 2010-11-14
      • 2012-09-04
      相关资源
      最近更新 更多