You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中自定义事件是否支持on{自定义事件名}的监听方式?

自定义事件能否使用on[事件名]方式监听?

不行,elem.onoption_removed(function() { ... })这种方式仅适用于原生浏览器事件,自定义事件没法这么用。

原因很直接:

原生事件的onxxx(比如onclick、onload)是DOM元素的预定义内置属性,浏览器已经提前把这些属性和对应的原生事件绑定好了,你只要给属性赋值一个函数,浏览器就会自动把它作为该事件的监听函数。

但自定义事件(比如你定义的option_removed)没有对应的预定义属性,你给DOM元素赋值onoption_removed,本质上只是给元素加了一个普通的自定义属性,浏览器根本不会把它和你通过dispatchEvent触发的自定义事件关联起来,自然不会触发这个函数。

正确的自定义事件监听方式

只能用addEventListener来监听自定义事件,示例代码如下:

// 你的自定义事件触发函数
function emitEvent() {
  const event = new CustomEvent("option_removed", {
    bubbles: true,
  });
  selectBox.dispatchEvent(event);
}

// 监听自定义事件
const selectBox = document.querySelector('#target-select');
selectBox.addEventListener('option_removed', function() {
  // 这里写事件处理逻辑
  console.log('option_removed 自定义事件触发了');
});

如果需要移除监听,也得用removeEventListener来对应操作。

内容的提问来源于stack exchange,提问作者Sackadelic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 20:05:24