【问题标题】:Why prop() does not trigger onchange event of radio with jquery [duplicate]为什么prop()不会触发带有jquery的收音机的onchange事件[重复]
【发布时间】:2023-04-03 02:19:01
【问题描述】:

我有一个单选元素(8 个同名元素),当我想让其中任何一个被选中/选中时,我使用代码:

myelmt.prop("checked",true)

问题是这段代码不会触发 onchange 事件。为什么?我总是必须这样做:

myelmt.prop("checked",true).trigger("change")

我有一个监听收音机变化值的库,为什么在使用 prop() 时浏览器没有触发 onchange 事件?

【问题讨论】:

  • 可能你正在寻找这个解释:stackoverflow.com/questions/5874652/prop-vs-attr
  • 因为 javascript 不会触发事件,只有用户操作会触发。
  • @varit05 与prop vs attr 无关。这两个函数都没有触发任何事件。
  • @epascarello 我很抱歉不同意,javascript 确实会触发事件,最近您甚至可以检查该事件是由用户还是由某些 js 代码引起的,但您可以触发它。
  • 当您手动更改属性或属性时,JavaScript 从未调用事件侦听器。您总是需要手动调用函数或触发事件。

标签: javascript jquery html radio


【解决方案1】:

我认为JQuery documentation 有答案

对于选择框、复选框和单选按钮,当用户使用鼠标进行选择时立即触发该事件,但对于其他元素类型,该事件会延迟到元素失去焦点.

另外,这个post may help

【讨论】:

  • 我认为对于所有元素类型,该事件仅在用户更改元素时发生,而不是由代码发生。
  • 它没有解释为什么我的 change 事件没有被触发,因为即使我在页面中的任何地方单击外部(产生模糊效果),事件也不会被触发。
  • 如果您以编程方式对其进行更改然后在外部单击,则更改仍不是用户发起的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-12
  • 1970-01-01
  • 1970-01-01
  • 2014-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多