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