2

我有一个难题。

events = $._data( element[0], 'events'); 

$.each(events, function(_event_name, _event_handler){ 
    var _handlers=[]; 
    for(var i= 0 ;i < _event_handler.length;i ++) 
            _handlers.push(_event_handler[i].handler);
    event_handler.push(_handlers); 
    event_name.push(_event_name); 
}); 

element.off(); 

我有上面的代码可以成功读取所有内容event name及其handler为元素分配的内容。

然后我将它们中的每一个保存到event_name关闭event_handler事件之前;

但是,此方法仅适用于直接为元素分配事件的情况。

当事件被委派分配时,我该如何开发代码来做到这一点?

$(document).on('click', '#id', handler);

上面的代码将只显示事件名称click及其处理程序handler,而不显示委托分配元素的名称或选择器#id

我想知道如何读取委托分配元素的名称,以便我可以关闭委托,否则父级上的所有事件都将关闭。

非常感谢您的建议。

4

1 回答 1

3

selector存储在单击事件数组中的对象中,如下selector所示。

selector当您查看click直接绑定到元素的事件时,该字段似乎是空的。

我假设您可以以某种方式对您的代码进行检查。请注意,该selector属性显然仅供内部使用,因为我过去曾对此提出疑问,当时我发现它偶尔包含奇怪的值。

为此,虽然它可能对你有用,但我不知道它有多可靠,或者即使它会在未来的 jQuery 版本中使用。

但是,如果您只将它用于委托事件,您可能会发现它包含有用的值,但请注意它。

在此处输入图像描述

于 2013-02-09T23:28:45.580 回答