为啥prop()不会触发带有jquery的收音机的onchange事件[重复]

Posted

技术标签:

【中文标题】为啥prop()不会触发带有jquery的收音机的onchange事件[重复]【英文标题】:Why prop() does not trigger onchange event of radio with jquery [duplicate]为什么prop()不会触发带有jquery的收音机的onchange事件[重复] 【发布时间】:2018-05-30 02:53:26 【问题描述】:

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

myelmt.prop("checked",true)

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

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

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

【问题讨论】:

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

我认为JQuery documentation 有答案

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

另外,这个post may help

【讨论】:

我认为对于所有元素类型,该事件仅在用户更改元素时发生,而不是由代码发生。 它没有解释为什么我的 change 事件没有被触发,因为即使我在页面中的任何地方单击外部(产生模糊效果),事件也不会被触发。 如果您以编程方式对其进行更改然后在外部单击,则更改仍不是用户发起的。

以上是关于为啥prop()不会触发带有jquery的收音机的onchange事件[重复]的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 收音机输入 .on('change') 触发了两次

jquery为啥触发多次click事件

带有日产汽车收音机的安卓蓝牙 SCO

ajax调用后Jquery事件不会触发

vuejs boolean props watch 不会触发

除了像 onclick 这样的委托处理程序事件之外,Jquery 直接事件不会触发?