我只是不小心将包含单选按钮的div
绑定到onchange
事件,而不是其中的实际单选按钮,并发现该事件仍然触发。我现在在Firefox和Webkit浏览器中运行了下面的小提琴,它们都工作了。
由于我以前从未见过或听说过这一点,我现在想知道这是否是有意的,它是新的,是否可以在生产中使用它并期望它在所有(或旧(浏览器中工作?MDN和W3schools都没有提到onchange
事件的非输入元素。
在这里小提琴:https://jsfiddle.net/4cjdy9do/
div
没有 自己的change
事件,但change
气泡。(这并不新鲜。从您链接的 MDN 页面:
气泡:是
因此,您将在任何包含input
或select
的元素(不仅仅是div
(上看到change
,前提是事件不会被stopPropagation
阻止冒泡。
例如,您可以监视document
上的所有(不停止(change
事件,因为气泡来自其原始目标元素:
document.addEventListener("change", function(e) {
console.log("Got change, new value: " + e.target.value);
});
<div>
<label>
One:
<input type="text">
</label>
</div>
<div>
<label>
Two:
<input type="text">
</label>
</div>
<div>
<label>
Three:
<select>
<option>ay</option>
<option>bee</option>
<option>see</option>
</select>
</label>
</div>