在 jQuery 中获取 .on() 绑定的所有事件

Get all the events bound by .on() in jQuery

本文关键字:绑定 事件 jQuery 获取 on      更新时间:2023-09-26

我有一个页面加载了Ajax的一些内容,并通过.on()方法将事件绑定到新的元素。

无论如何都可以在<div class="inner">上获取所有绑定事件吗?加载所有内容后,我尝试在控制台中$("div.inner").data('events'),但除了undefined什么都没有.

目录:

<div id="out"><p></p></div>​

JavaScript:(不是真正的ajax,只是一个模拟)

var innDiv = '<div class="inner">inner</div>' +
'<div class="inner">inner</div>' +
'<div class="inner">inner</div>';
$(document).on('click','.inner', function(){$(this).toggleClass("green")});
setTimeout('$("#out").append(innDiv)',2000);​

这是jsfiddle代码演示。

由于您将事件绑定到document元素,请尝试以下操作:

$(document).data("events")

从 jQuery 1.8 开始,$(element).data("events") 被删除。但出于调试目的,使用 $._data(element, "events") 可以获取元素上的事件绑定。由于它不是公共接口,因此将来可能无法正常工作。

在此处查看 jQuery 发布日志。

对不起,我的错,在这种情况下,如果是现场活动。

$('.target').live('click', function foo(){  });

$('containerObj').on('click', 'target', function foo(){  });

您可能需要检查要将实时事件绑定到的对象的事件数据。

如果是在文档级别,则可能必须检查文档对象的事件或事件绑定到的目标容器。

以从您执行的元素中删除实时附加事件。

$('containerObj').off('click', 'target', function foo(){  });

希望对您有所帮助。