通过 将处理程序放置到元素$.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__: 对象 不明确的 没有属性
如您所见,click
hander 就body
在那里,与selector
element 匹配#mylink
。