【发布时间】:2021-11-10 10:34:15
【问题描述】:
我正在尝试将 EventListener 添加到 <option> 元素。
我尝试了各种方法,但没有结果。 我正在使用 VueJS,所以我尝试使用他们的事件绑定机制。
VueJS - 事件绑定 - 仅适用于 <select>
<select @mouseover="testValue = true" @mouseleave="testValue = false" ref="select">
<option v-for="(option, index) in selectionSet" :key="index"
:value="option.id" :disabled="option.disabled" @mouseover="testValue = true" @mouseleave="testValue = false">
{{option.name}}
</option>
</select>
接下来我自然而然地采用了 RAW plainJS 方式。
PlainJS - AddEventListener() - 元素有效,但 eventListener 不会被注册
this.$refs.select.options.forEach((el) => {
el.addEventListener('pointerover', () => { window.console.log('AAAAH'); });
if (!el.disabled) window.console.log(el.value);
});
是的,我使用了多个事件名称。
那该怎么办? -> 阅读文档
查看MDN 上的<option> 文档,我可以看到<option> 具有HTMLOptionElement DOM 接口。该接口应该具有继承自HTMLElement 的所有属性和方法。
HTMLOptionElement 接口表示元素并继承了 HTMLElement 接口的所有属性和方法。 - MDN
所以我想知道,我可以以某种方式将 eventListeners 注册到 <option> 元素吗?
【问题讨论】:
-
这是一个 X/Y 问题。请解释您的用例,我们可以回答您可能想要的东西,而不是您认为自己想要的东西:)
-
用例应该很明显。我想在
-
您将需要使用 select2 或其他一些小部件。您不会在选项上找到好的跨浏览器鼠标悬停触发
-
@D.Schaller 看起来你只能监听由父
<select>元素本身触发的change事件,如果用户改变了它的值。
标签: javascript html vue.js dom-events