JS中自定义事件的使用与触发操作实例分析
本文实例讲述了JS中自定义事件的使用与触发操作。分享给大家供大家参考,具体如下:
1.事件的创建
JS中,最简单的创建事件方法,是使用Event构造器:
varmyEvent=newEvent('event_name');
但是为了能够传递数据,就需要使用CustomEvent构造器:
varmyEvent=newCustomEvent('event_name',{ detail:{ //将需要传递的数据写在detail中,以便在EventListener中获取 //数据将会在event.detail中得到 }, });
2.事件的监听
JS的EventListener是根据事件的名称来进行监听的,比如我们在上文中已经创建了一个名称为‘event_name'的事件,那么当某个元素需要监听它的时候,就需要创建相应的监听器:
//假设listener注册在window对象上 window.addEventListener('event_name',function(event){ //如果是CustomEvent,传入的数据在event.detail中 console.log('得到数据为:',event.detail); //...后续相关操作 });
至此,window对象上就有了对‘event_name'这个事件的监听器,当window上触发这个事件的时候,相关的callback就会执行。
3.事件的触发
对于一些内置(built-in)的事件,通常都是有一些操作去做触发,比如鼠标单击对应MouseEvent的click事件,利用鼠标(ctrl+滚轮上下)去放大缩小页面对应WheelEvent的resize事件。
然而,自定义的事件由于不是JS内置的事件,所以我们需要在JS代码中去显式地触发它。方法是使用dispatchEvent去触发(IE8低版本兼容,使用fireEvent):
//首先需要提前定义好事件,并且注册相关的EventListener varmyEvent=newCustomEvent('event_name',{ detail:{title:'Thisistitle!'}, }); window.addEventListener('event_name',function(event){ console.log('得到标题为:',event.detail.title); }); //随后在对应的元素上触发该事件 if(window.dispatchEvent){ window.dispatchEvent(myEvent); }else{ window.fireEvent(myEvent); } //根据listener中的callback函数定义,应当会在console中输出"得到标题为:Thisistitle!"
需要特别注意的是,当一个事件触发的时候,如果相应的element及其上级元素没有对应的EventListener,就不会有任何回调操作。
对于子元素的监听,可以对父元素添加事件托管,让事件在事件冒泡阶段被监听器捕获并执行。这时候,使用event.target就可以获取到具体触发事件的元素。
PS:这里再为大家附上javascript系统自带事件参考表供大家参考查询:
javascript事件与功能说明大全:
http://tools.jb51.net/table/javascript_event
更多关于JavaScript相关内容可查看本站专题:《JavaScript事件相关操作与技巧大全》、《JavaScript常用函数技巧汇总》、《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。