是否可以在元素上找到委托事件
Is it possible to find a delegated event on an element?
当通过$.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 处理程序:函数 (( { 命名空间:" 原始类型:"点击" 快速:阵列[4] 选择器:"#mylink" 类型:"点击" __proto__:对象 代表计数: 1 长度: 1 __proto__: 数组[0] __proto__:对象定义 无属性
如您所见,body
上的click
手在那里,selector
与元素#mylink
匹配。
相关文章:
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 将事件聚焦/模糊在可编辑内容的元素上
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 在IE8中不起作用的元素上触发单击事件
- 正在ng重复元素上添加事件
- 单击p元素时的javascript触发事件
- 存在每个时间元素的javascript事件
- Firefox:点击并更改未附加到文档树中的复选框元素上的事件
- 有没有一种方法可以让内联事件处理程序在元素创建后立即执行
- 将jQuery事件应用于所有类元素
- 在IE8上使用jQuery克隆HTML5元素和事件
- 单击其他元素时,我如何使用 jQuery 忽略更改事件
- 访问代码生成的输入元素上的keyup事件
- 如何查明鼠标按下事件是否发生在滚动条上或元素中的其他任何位置
- 当元素到达屏幕上的某个位置时触发事件
- Mootools:如何在点击时保持元素高亮显示并停止所有事件
- 将事件侦听器添加到文档,而不是签入元素存在,然后添加事件侦听器
- JQuery:使用clone()生成的元素不采用原始的事件属性
- 从其他元素上的单击事件访问image src属性
- 触发“三个”的点击事件.元素