我有一个很难回答的问题。
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
和 event_handler
中;
但是,此方法仅在直接为元素分配事件时才有效。
当事件被委托(delegate)分配时,我如何开发代码来执行此操作?
$(document).on('click', '#id', handler);
上面的代码只会显示事件名称click
及其处理程序handler
,但不会显示委托(delegate)分配元素#id
的名称或选择器>.
我想知道如何读取委托(delegate)分配元素的名称,以便我可以关闭委托(delegate),否则父级上的所有事件都将关闭。
非常感谢您的建议。
最佳答案
选择器
存储在选择器
下的点击事件数组中的对象中,如下所示。
当您查看直接绑定(bind)到元素的 click
事件时,selector
字段似乎为空。
我假设您可以以某种方式对您的代码进行检查。请注意,selector
属性显然仅供内部使用,因为我自己过去也对它有过疑问,当时我发现它偶尔包含奇怪的值。
为此,尽管它可能对您有用,但我不知道它有多可靠,甚至不知道它是否会在未来版本的 jQuery 中使用。
但是,如果您仅将其用于委托(delegate)事件,您可能会发现它包含有用的值,但请密切关注。
关于javascript - 在 Node.js 中,从委托(delegate)分配的事件中检查父级的子级名称或选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14792673/