三要素: document.createEvent() event.initEvent() element.dispatchEvent()
- // (en: 自定义事件名称, fn: 事件处理函数, addEvent: 为 DOM 元素添加自定义事件, triggerEvent: 触发自定义事件)
- Windows.onload = function(){
- var demo = document.getElementById("demo");
- demo.addEvent("test",function(){console.log("handler1")});
- demo.addEvent("test",function(){console.log("handler2")});
- demo.onclick = function(){
- this.triggerEvent("test");
- }
- }
- Element.prototype.addEvent = function(en,fn){
- this.pools = this.pools || {};
- if(en in this.pools){
- this.pools[en].push(fn);
- }else{
- this.pools[en] = [];
- this.pools[en].push(fn);
- }
- }
- Element.prototype.triggerEvent = function(en){
- if(en in this.pools){
- var fns = this.pools[en];
- for(var i=0,il=fns.length;i<il;i++){
- fns[i]();
- }
- }else{
- return;
- }
- }
来源: http://www.jianshu.com/p/9a628edcf74d