Javascript 是否可以在元素上找到委派事件?

Javascript 是否可以在元素上找到委派事件?,javascript,jquery,delegates,Javascript,Jquery,Delegates,当通过$.on()将处理程序放置到某个元素时,当您只有目标时,是否有任何方法可以找到委派事件 例: $('body')。在('click','myLink',function(){doStuff()})上 $('#myLink').eventsFromOn() 我知道这看起来很奇怪,因为如果事件有委托事件数据,它就不再是一个真正的委托事件了,但值得去问 谢谢 如果您正在查找处理程序数据,如果您足够努力,似乎可以找到包含未记录信息的处理程序数据。在未记录的事件数据对象上,有键类型,处理程序,重要

当通过
$.on()
将处理程序放置到某个元素时,当您只有目标时,是否有任何方法可以找到委派事件

例:

$('body')。在('click','myLink',function(){doStuff()})上

$('#myLink').eventsFromOn()

我知道这看起来很奇怪,因为如果事件有委托事件数据,它就不再是一个真正的委托事件了,但值得去问


谢谢

如果您正在查找处理程序数据,如果您足够努力,似乎可以找到包含未记录信息的处理程序数据。在未记录的
事件
数据对象上,有键
类型
处理程序
,重要的是,
选择器
。因此,如果您从
#mylink
开始,您可以查看其祖先中每个级别的
事件
数据,查找与所需事件的匹配,其中
$(“#mylink”).is(选择器)
为true

例如,使用此HTML:

<body>
  <div id="mylink">click me</div>
</body>
然后这样做:

var level = $("#mylink");
while (level[0]) {
  console.dir(level.data('events'));
    level = level.parent();
}
我明白了:

undefined No Properties Object click: Array[1] 0: Object data: undefined guid: 1 handler: function () { namespace: "" origType: "click" quick: Array[4] selector: "#mylink" type: "click" __proto__: Object delegateCount: 1 length: 1 __proto__: Array[0] __proto__: Object undefined No Properties 未定义 无属性 对象 单击:数组[1] 0:对象 数据:未定义 guid:1 处理程序:函数(){ 名称空间:“ 原始类型:“单击” 快速:数组[4] 选择器:“#mylink” 键入:“单击” __原型:对象 委派人数:1 长度:1 __原型:数组[0] __原型:对象 未定义 无属性
正如您所看到的,
正文
上的
点击
手柄就在那里,有一个
选择器
匹配元素
#mylink

,我想您可以通过这样的
$(“#mylink”)。数据('events')。点击[0].handler
在您的示例中,您是在寻找
正文
还是
#mylink
?还是其他什么?问题真的不清楚。@MilkyWayJoe:不,当使用普通
单击事件时,单击事件是,但当使用
打开()
目标元素不包含'events'数据是的,我不完全确定,只是测试太糟糕了,但我认为它是有意义的,嗯,所以它基本上是一个递归函数,最多可以访问
文档。
不想去那里,但如果归结到这一点…@并且更进一步:不是递归的,但肯定是一个循环。Probably一个循环中的一个循环(外循环是祖先的等级,内循环是通过处理程序的数组)。无论哪种方式,都不完全有利,但看起来没有更有效的方式,所以这种方法得到了蛋糕,谢谢! undefined No Properties Object click: Array[1] 0: Object data: undefined guid: 1 handler: function () { namespace: "" origType: "click" quick: Array[4] selector: "#mylink" type: "click" __proto__: Object delegateCount: 1 length: 1 __proto__: Array[0] __proto__: Object undefined No Properties