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