2019-07-24 语言►JavaScript JavaScript中的自定义事件 目录 摘要正文创建自定义事件参考资料 本文作者: jsweibo 本文链接: https://jsweibo.github.io/2019/07/24/JavaScript%E4%B8%AD%E7%9A%84%E8%87%AA%E5%AE%9A%E4%B9%89%E4%BA%8B%E4%BB%B6/ 摘要本文主要讲述了: 创建自定义事件 正文创建自定义事件示例: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <div id="foo"> <p id="bar">hello, world</p> </div> <script> // 创建自定义事件,不允许冒泡 const helloEvent = new Event('hello'); // 触发自定义事件 document.querySelector('#bar').addEventListener('click', function () { this.dispatchEvent(helloEvent); }); // 监听自定义事件,捕获 window.addEventListener( 'hello', function () { console.log(1); }, true ); // 监听自定义事件,捕获 document.querySelector('#foo').addEventListener( 'hello', function () { console.log(2); }, true ); // 监听自定义事件,捕获 document.querySelector('#bar').addEventListener( 'hello', function () { console.log(3); }, true ); // 监听自定义事件,冒泡 document.querySelector('#bar').addEventListener('hello', function () { console.log(4); }); // 监听自定义事件,冒泡 // 由于不允许冒泡,因此监听不到 document.querySelector('#foo').addEventListener('hello', function () { console.log(5); }); // 监听自定义事件,冒泡 // 由于不允许冒泡,因此监听不到 window.addEventListener('hello', function () { console.log(6); }); </script> </body></html> 示例: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <div id="foo"> <p id="bar">hello, world</p> </div> <script> // 创建自定义事件,允许冒泡 const helloEvent = new Event('hello', { bubbles: true, }); // 触发自定义事件 document.querySelector('#bar').addEventListener('click', function () { this.dispatchEvent(helloEvent); }); // 监听自定义事件,捕获 window.addEventListener( 'hello', function () { console.log(1); }, true ); // 监听自定义事件,捕获 document.querySelector('#foo').addEventListener( 'hello', function () { console.log(2); }, true ); // 监听自定义事件,捕获 document.querySelector('#bar').addEventListener( 'hello', function () { console.log(3); }, true ); // 监听自定义事件,冒泡 document.querySelector('#bar').addEventListener('hello', function () { console.log(4); }); // 监听自定义事件,冒泡 document.querySelector('#foo').addEventListener('hello', function () { console.log(5); }); // 监听自定义事件,冒泡 window.addEventListener('hello', function () { console.log(6); }); </script> </body></html> 参考资料 Event dispatchEvent 本文作者: jsweibo 本文链接: https://jsweibo.github.io/2019/07/24/JavaScript%E4%B8%AD%E7%9A%84%E8%87%AA%E5%AE%9A%E4%B9%89%E4%BA%8B%E4%BB%B6/ 本文对你有帮助?请支持我 支付宝 微信 本文作者: jsweibo 本文链接: https://jsweibo.github.io/2019/07/24/JavaScript%E4%B8%AD%E7%9A%84%E8%87%AA%E5%AE%9A%E4%B9%89%E4%BA%8B%E4%BB%B6/ 版权声明: 除非另有说明,否则本网站上的内容根据署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。 下一篇 JavaScript中的document.open 上一篇 什么是Browserslist