javascript - dom 节点上的自定义事件监听器

标签 javascript html custom-events

我想从一个元素在 js 中调度一个自定义事件。是这样的:

var event = new CustomEvent("foo");
var elem = document.getElementById("bar");
elem.dispatchEvent(event);

但是我无法在 dom 节点上为新的自定义事件绑定(bind)监听器。对于标准事件来说,这很容易。只需添加一个属性 on<eventName>="some javascript"

<button onclick="console.log('click!')"></button>

自定义元素也可以吗?我试过on<elementName>on-<elementName>但它不起作用。

<button onfoo="console.log('foo!')"></button>
<button on-foo="console.log('foo!')"></button>

最佳答案

您可以使用addEventListener方法注册自定义事件处理程序。顺便说一句,这种方法也推荐用于 native 事件。内联处理程序很糟糕,因为它们将 View (HTML) 与逻辑 (js) 混合在一起。

var elem = document.getElementById("bar");

elem.addEventListener('foo', function() {
  console.log('foo event on bar')
})

document.getElementById('foo').addEventListener('click', function() {
  var event = new CustomEvent('foo');
  elem.dispatchEvent(event);
})
<button id="bar">Bar</button>
<button id="foo">Trigger Foo</button>

关于javascript - dom 节点上的自定义事件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45543820/

相关文章:

javascript - 如何在捕获阶段触发自定义事件

javascript - 从纪元计算毫秒

javascript - 相当于 Node.js 中的 laravel 风格的服务提供者(或 wp 风格的插件)

javascript - jQuery 获取自定义事件的参数值

javascript - 用于预选下拉值的 YUI 自定义事件?

html - 表格的滚动条将文本推到左边?

javascript - 为什么我的书没有排列在正确的书架上(React-Redux)?

javascript - 脚本1003 : Expected ':' in IE 11 only

html - 具有边界半径的元素的可选区域不一致

javascript - 单击时 HTML 字段中的文本会消失吗?