原生js模仿trigger自动触发事件

2,222 阅读1分钟

朋友们,好久没更了。。。 这次,我想跟你们分享下我对js事件的一些不一样的运用。 我是一个一直很懒于用jquery插件的人,引入他呢作用不大,不引入又有点痒,尤其是trigger方法,我一度觉得它的完美,但是又不想使用jQuery,于是,我区参考了JavaScript的事件机制。 研究发现,使用js也可以完美得自创trigger方法!!

now, 切入正文,前面太罗嗦了

document.CreateEvent(type); 这个方法是DOM的创建事件的接口 通过这个方法,我们可以创建自己想要的事件,包括鼠标事件

代码是这样的

    // 创建鼠标事件/自定义事件 to(模仿jquery trigger('click');)
    // params : 
    // eventType {mouseEvent: 鼠标事件,Event: 自定义事件}
    // eventName 事件名称
    function imitatEvent(EventType, EventName) {
      var event = document.createEvent(EventType);
      event.initEvent(EventName, true, true);
      return event;
    }

前面写了一个创建事件的接口,接下来,我们就来使用这个接口

var event = imitatEvent('Event', 'redux')
var event2 = imitatEvent('MouseEvents', 'click');

然后,我们可以触发我们的事件了

// element2 为任何dom元素
element2.dispatchEvent(event);
element2.dispatchEvent(event2);

想看到变化的话,去监听这两个事件看下, 需在dispatchEvent前头定义

// 监听事件
element2.addEventListener('redux', function(event) {
  console.log(11111, event.type);
});
element2.addEventListener('click', function() {
  console.log(2222, event2.type);
});

就是这样的啦!

如果朋友们有更好的方法,或者觉得这个又需要修改的方法,请给我留言,我在看见后会回复的。