JS自定义事件

今天了解到了js的自定义事件,通过自定义事件可以解决一些用普通办法很难解决的事情,希望以后在遇到难题时可以扩展思路,尝试一下使用自定义事件。并且自定义事件最重要的优点就是可以降低代码的耦合度

简单的自定义事件就是通过Event()构造器来 new 一个对象,如var ev = new Event("look", {"bubbles":true, "cancelable":false});这个ev就表示一个look事件,可以通过dispatchEvent(ev)来在具体的Element上触发这个事件,但是要捕获这个事件,还需要添加监听器,因为这个ev对象是冒泡的,所以在触发事件的Element及其任意祖先节点上都是可以捕获到look事件

例子如下:

<html>
<head></head>
<body>
  <div id="a"></div>
  <script type="text/javascript">
    var ev = new Event("look", {"bubbles":true, "cancelable":false}),
      a = document.getElementById('a');
    document.addEventListener('look',function(){
      console.log('document look!');
    })
    a.addEventListener('look',function(){
      console.log('a look!');
    })
    a.dispatchEvent(ev);
    document.dispatchEvent(ev);
  </script>
</body>
</html>

结果为:

a look!
document look!
document look!

还有一种复杂点的自定义事件,是js高程3里面的616页,这个等有空再更新