自定义事件

#自定义事件

var event = new Event('build');

// Listen for the event.
elem.addEventListener('build', function (e) { ... }, false);

// Dispatch the event.
elem.dispatchEvent(event);

注意:document.createEvent()已经过时。

##模拟DOM事件

//模拟click事件
//获取btn
var btn = document.querySelector("#btn");
//创建event
var event = document.createEvent("MouseEvents");
//初始化event
event.initMouseEvent("click",true,true,document.defaultView,0,0,0,0,0,false,false,false,false,0,null);
//click事件绑定事件处理程序
btn.onclick = function () {
    console.log("hello");
}
//触发事件
btn.dispatchEvent(event); //hello
//取消引用
btn.onclick = null;

##jQuery自定义事件

// Equivalent to subscribe(topicName, callback)
$( document ).on( "topicName" , function () {
    //..perform some behaviour
});

// Equivalent to publish(topicName)
$( document ).trigger( "topicName" );

// Equivalent to unsubscribe(topicName)
$( document ).off( "topicName" );

#nodejs中的自定义事件 node中的自定义事件很简单就是继承events.EvenEmitter方法

const events=require('events');

class Person extend events.EvenEmitter{
  constructor(name) {
    this.name = name;
  }
}

const li=new Person('li');
li.on('eat',(e)=>{
   console.log(e);
})

li.emit('eat','土');
Licensed under CC BY-NC-SA 4.0