为啥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') 触发了两次