JS中自定义事件的使用与触发
1. 事件的创建
JS中,最简单的创建事件方法,是使用Event构造器:
1 | var myEvent = new Event('event_name'); |
但是为了能够传递数据,就需要使用 CustomEvent 构造器:
1 | var myEvent = new CustomEvent('event_name', { |
2. 事件的监听
JS的EventListener是根据事件的名称来进行监听的,比如我们在上文中已经创建了一个名称为‘event_name’ 的事件,那么当某个元素需要监听它的时候,就需要创建相应的监听器:
1 | //假设listener注册在window对象上 |
至此,window对象上就有了对‘event_name’ 这个事件的监听器,当window上触发这个事件的时候,相关的callback就会执行。
3. 事件的触发
对于一些内置(built-in)的事件,通常都是有一些操作去做触发,比如鼠标单击对应MouseEvent的click事件,利用鼠标(ctrl+滚轮上下)去放大缩小页面对应WheelEvent的resize事件。
然而,自定义的事件由于不是JS内置的事件,所以我们需要在JS代码中去显式地触发它。方法是使用 dispatchEvent 去触发(IE8低版本兼容,使用fireEvent):
1 | // 首先需要提前定义好事件,并且注册相关的EventListener |
需要特别注意的是,当一个事件触发的时候,如果相应的element及其上级元素没有对应的EventListener,就不会有任何回调操作。
对于子元素的监听,可以对父元素添加事件托管,让事件在事件冒泡阶段被监听器捕获并执行。这时候,使用event.target就可以获取到具体触发事件的元素。
4. Android 触发js的addEventListener自定义事件
1 | private void triggerEvnet(String eventName, String detail){ |
本文链接: http://www.ionluo.cn/blog/posts/2b2dadd1.html
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
