如何将自定义事件分派给所有侦听元素
how can I dispatch customized events to all listening elements
示例代码:
var evt = document.createEvent('Event');
evt.initEvent('myevent',true,true);
ele.dispatchEvent(evt) //ele is an HTML element
,但它只是调度事件,只有一个元素,是否有一个优雅的方式来广播事件,所有的元素使用addEventListener('myevent',…)注册回调函数?
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);
}
}
相关文章:
- CKEditor Widget-阻止编辑可编辑元素本身
- 如何设置html元素填充的动画
- 分派点击事件并保留击键修饰符
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 使用clickToggle并在单击另一个元素时关闭元素
- 单击时将焦点更改为元素
- 表追加而不附加最后一个元素
- 如何在jQuery中获取元素的形式
- 我可以获得相对于被点击元素的确切点击位置吗
- 在函数中添加数组元素的数值
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 将视口底部滚动到元素底部
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 如何使用jquery处理php循环通过元素
- Ckeditor-plugin:插入虚假元素add不情愿<p>标签前后
- JQuery添加元素需要在我的js之前再次添加JQuery脚本
- Vuex在分派动作时改变状态中的2个元素
- 如何将自定义事件分派给所有侦听元素