为什么使用prop()方法无法触发radio的onchange事件

10 浏览
0 Comments

为什么使用prop()方法无法触发radio的onchange事件

我有一个具有相同名称的单选元素(8个元素),当我想要选择/勾选其中任何一个时,我使用以下代码:

myelmt.prop("checked",true)

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

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

我有一个监听单选按钮变化值的库,为什么浏览器在使用prop()时不触发onchange事件?

0
0 Comments

问题的出现原因:

根据JQuery文档,在选择框、复选框和单选按钮中,当用户使用鼠标进行选择时,事件会立即触发,但对于其他元素类型,事件会被延迟到元素失去焦点时才触发。因此,无论通过代码还是用户操作来改变元素的值,只有用户操作才能触发change事件。

解决方法:

如果想要通过代码来改变元素的值并触发change事件,可以使用.trigger()方法,手动触发change事件。

代码示例:

$('input[type="radio"]').prop('checked', true).trigger('change');

这样,无论是通过用户操作还是代码改变了单选按钮的选中状态,都会触发change事件。

0