通常在我使用的DOM节点上获取侦听器
$('selector').data('events');
但是,这并未显示通过委派添加的事件侦听器,例如
$(document).on('click', 'selector', handlerFunction)
一种显而易见的方法是遍历DOM树,看看是否有任何父母将事件委托给手头的元素,同时调用$('selector').parent().data('events')
直到找不到父母,但是这不会让我觉得非常有效或标准的做事方式,我认为这种问题太常见,不能有更好的解决方案。
如何查找所有事件监听器,包括委托监听器?
答案 0 :(得分:0)
ATM我使用下面的功能,而不是优雅 - 但节省了我很长时间。
var getAllEventListeners = function (options) {
if (options.internalArr == undefined)
options.internalArr = [];
if (options.elements.data('events') != undefined) {
options.internalArr.push({
elements: options.elements,
events: options.elements.data('events')
});
}
if (options.elements.parent().length != 0) {
getAllEventListeners({
elements: options.elements.parent(),
internalArr: options.internalArr
});
}
}
var findAllListeners = function (selector) {
var opt = {
elements: $(selector),
internalArr: []
};
getAllEventListeners(opt);
return opt.internalArr;
}