展开目录
简易版事件封装
javascriptevent
X
陈尼玛的博客
记录开发生涯的踩坑经历,用时间来验证成长
加载中

以前事件触发用的是jquery的方法,但jquery里面似乎并不是同步触发的,在另一个同事电脑上经常发生异步的情况,因此我自己实现了一个简单版本的事件触发器。

  let event=()=>{
    let ch={},_evts={}
    ch.on=(name,handler)=>{
      _evts[name]=_evts[name]||[]
      _evts[name].push(handler)
      return ch
    }
    ch.emit=(name,data)=>{
      for(let n in _evts){
        if(n!==name && n.indexOf(name+".")!=0)continue;
        _evts[n].map((handler)=>handler(data))
      }
      return ch
    }
    ch.off=(name)=>{
      for(let n in _evts){
        if(n!==name && n.indexOf(name+".")!=0)continue;
        delete _evts[n]
      }
      return ch
    }
    return ch
  }

  // 用法
  let e=event()
  e.on('click.a1',()=>console.log('click.a1'))
  e.on('click.b1',()=>console.log('click.b1'))
  e.emit('click') // 输出 click.a1 click.b1
  e.emit('click.b1') // 输出 click.b1
  e.off('click')

相关文档

暂无

随便看看

  1. css多行文本超出截断显示省略号

  2. css3自定义滚动条样式

  3. pip安装nltk临时使用国内源

  4. sass变量和继承类写法

  5. css3 文字渐变色

  6. git删除远程分支

  7. 搜索命令整理

  8. heroku登陆cli

  9. 单页应用的单向数据流的流程图

  10. 树莓派配置wifi热点

  11. TIME_WAIT过多

  12. git 设置代理服务器

  13. ssl 证书生成方式

  14. centos查看最近一次的开机时间

  15. 树莓派配置收发邮件

  16. centos7 开放或者关闭端口

  17. youku电脑版跳过广告代码

  18. 感谢beego陪伴我度过那不靠谱的半年

畅言模块加载中