首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery全局侦听自定义事件

jQuery全局侦听自定义事件
EN

Stack Overflow用户
提问于 2012-03-21 01:48:03
回答 1查看 18.3K关注 0票数 9

我正在尝试做的事情的一个简化版本如下:

代码语言:javascript
复制
var indication = $('#some-div');
indication.bind('custom-event', function() { ... }


 // ... later on!

 function OtherThing() {
   $(this).trigger('custom-event');
 }

我希望indication.bind('custom-event')接收来自function OtherThing的触发器,而这两个人不必显式地了解对方。这个是可能的吗?到目前为止,我唯一的解决方案是将监听器和事件都绑定到主体...这看起来很草率--有没有更好的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-21 01:54:18

在JavaScripts中,在每个HTML元素上触发的事件被传播到它们的父元素,因此,要解决您的问题并使任何元素能够处理自定义事件,而不会像$('*').bind('custom-event')那样出错,就是将侦听器绑定到所有元素的公共父元素,即bodyhtml元素:]

因此,您只需要将事件绑定到bodyhtml元素。然后,当选择的父元素中的任何元素触发自定义事件时,它将被传播到这个父元素。

然后,在事件处理程序中,可以通过访问事件对象的target属性来访问触发事件的元素:event.target

因此,代码应该是:

代码语言:javascript
复制
$('body').bind('custom-event', function(e){
  var $element = e.target;
});

$('#anyElement').trigger('custom-event');
票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9792226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档