通过 将处理程序放置到元素$.on()时,当您只有目标时,有没有办法找到委托事件?
前任:
$('body').on('click', '#myLink', function(){ doStuff() });
...
$('#myLink').eventsFromOn();
我知道这看起来很奇怪,因为如果事件有委托事件数据,它就不再是真正的委托事件,但值得一问......
谢谢!
通过 将处理程序放置到元素$.on()时,当您只有目标时,有没有办法找到委托事件?
前任:
$('body').on('click', '#myLink', function(){ doStuff() });
...
$('#myLink').eventsFromOn();
我知道这看起来很奇怪,因为如果事件有委托事件数据,它就不再是真正的委托事件,但值得一问......
谢谢!
如果您正在寻找处理程序数据,如果您足够努力,您似乎可以找到带有未记录信息的信息。在未记录的events数据对象上,您有键type、handler和 - 重要的是 - selector。因此,如果您从 开始#mylink,您可以查看events其祖先中每个级别的数据,为您想要的事件寻找匹配项,其中$("#mylink").is(selector)为真。
例如,使用此 HTML:
<body>
<div id="mylink">click me</div>
</body>
如果我执行
$("body").on("click", "#mylink", function() {
// Anything
});
然后这样做:
var level = $("#mylink");
while (level[0]) {
console.dir(level.data('events'));
level = level.parent();
}
我明白了:
不明确的
没有属性
目的
点击:数组[1]
0:对象
数据:未定义
指导:1
处理程序:函数(){
命名空间:“”
origType: "点击"
快速:数组[4]
选择器:“#mylink”
类型:“点击”
__proto__: 对象
委托数:1
长度:1
__proto__: 数组[0]
__proto__: 对象
不明确的
没有属性
如您所见,clickhander 就body在那里,与selectorelement 匹配#mylink。