div 从什么时候开始支持“onchange”事件,它是一个错误



我只是不小心将包含单选按钮的div绑定到onchange事件,而不是其中的实际单选按钮,并发现该事件仍然触发。我现在在Firefox和Webkit浏览器中运行了下面的小提琴,它们都工作了。

由于我以前从未见过或听说过这一点,我现在想知道这是否是有意的,它是新的,是否可以在生产中使用它并期望它在所有(或旧(浏览器中工作?MDN和W3schools都没有提到onchange事件的非输入元素。

在这里小提琴:https://jsfiddle.net/4cjdy9do/

div没有

自己的change事件,但change气泡。(这并不新鲜。从您链接的 MDN 页面:

气泡:是

因此,您将在任何包含inputselect的元素(不仅仅是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>

相关内容

最新更新