Javascript 如何将自定义事件分派到所有侦听元素

Javascript 如何将自定义事件分派到所有侦听元素,javascript,Javascript,示例代码: var evt = document.createEvent('Event'); evt.initEvent('myevent',true,true); ele.dispatchEvent(evt) //ele is an HTML element 但它只将事件分派给一个元素,是否有一种优雅的方式将事件广播给所有使用addEventListener('myevent',…)注册回调函数的元素?d={};//跟踪每个事件的侦听器。 d = {}; // keep track of

示例代码:

var evt = document.createEvent('Event');
evt.initEvent('myevent',true,true);
ele.dispatchEvent(evt)  //ele is an HTML element
但它只将事件分派给一个元素,是否有一种优雅的方式将事件广播给所有使用addEventListener('myevent',…)注册回调函数的元素?

d={};//跟踪每个事件的侦听器。
d = {}; // keep track of the listeners for each event.

// Register the event listeners
function registerListener(elem, evt, d) {
   if (d.hasOwnProperty(evt)) {
      d[evt].push(elem);
   }
   else {
      d[evt] = [];
   }
}

// Get the listeners and dispatch the event to all them
function dispatchAll(evt, d) {
   var listeners = d[evt],
       elem;

   for (var i = 0; i < listeners.length; i++) {
      elem = listeners[i];
      elem.dispatchEvent(evt);
   }
}
//注册事件侦听器 函数寄存器列表器(elem、evt、d){ 如果(d.hasOwnProperty(evt)){ d[evt].推送(elem); } 否则{ d[evt]=[]; } } //获取侦听器并将事件分派给所有侦听器 功能分派全部(evt,d){ 变量侦听器=d[evt], 元素; for(var i=0;i
d={};//跟踪每个事件的侦听器。
//注册事件侦听器
函数寄存器列表器(elem、evt、d){
如果(d.hasOwnProperty(evt)){
d[evt].推送(elem);
}
否则{
d[evt]=[];
}
}
//获取侦听器并将事件分派给所有侦听器
功能分派全部(evt,d){
变量侦听器=d[evt],
元素;
for(var i=0;i
uh。。我已经考虑过了,只是想要一个更好的解决方案你需要观察者模式。阅读Stoyan Stefanov(O'Reilly)的《JavaScript模式》第7章,版权2010 Yahoo!Inc.,9780596806750.。嗯。。我已经考虑过了,只是想要一个更好的解决方案你需要观察者模式。阅读Stoyan Stefanov(O'Reilly)的“JavaScript模式”第7章。版权所有2010 Yahoo!Inc.,9780596806750