【问题标题】:Does the onchange attribute work in non-traditional elements?onchange 属性是否适用于非传统元素?
【发布时间】:2011-03-18 18:24:37
【问题描述】:

由于事件在 DOM 中冒泡,似乎更改事件应该能够到达任何容器元素(例如 div、table 或 ul 元素)。因此,似乎任何此类元素都应该支持 onchange 属性。不过,only a few element types 似乎在官方标准中支持这一点。

尽管如此,我还是可以给 tbody 一个 onchange 属性,当我在 tbody 中更改文本输入的内容时会运行该属性。

如果我使用其他一些主流浏览器+操作系统的组合,我会遇到同样的事情吗?

【问题讨论】:

标签: javascript html


【解决方案1】:

DOM Level 2 Events Specification 中所述,change 事件仅对 INPUT、SELECT 和 TEXTAREA 元素有效。

编辑:作为@no kindly cmets,根据 W3C 标准的事件会冒泡,这样做的目的显然是在其他元素上捕捉事件。

但我不建议您使用 change 进行跨浏览器冒泡,原因之一是:IE

在他们专有的Event Model 实现中,他们explicitly describe 认为change 事件不会冒泡...

【讨论】:

  • 正如我在问题中所说,我已经熟悉只有少数元素类型支持此属性的事实。我的问题是,实践中实际发生了什么?
  • @allyourcode 您应该很少(如果有的话)依赖非标准功能。
  • CMS:这里的规范有点混乱。它说change 事件仅对您列出的元素有效,但就在其下方,它表示更改事件冒泡。由于这些元素都不能相互嵌套,因此可以假设冒泡的原因是在非输入类元素上捕获事件......如果这不是预期的行为,规范会有使这成为一个不冒泡的事件。似乎对规范的正确解释是更改事件应该可以在事件起源的inputselecttextarea 的父元素上捕获。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-10
  • 2020-07-05
  • 2015-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多