【发布时间】:2019-05-23 08:41:55
【问题描述】:
我有以下代码:http://jsfiddle.net/0Lp4oqn6/
On <input type='radio' name='radio' class='radio' value='on'>
Off <input type='radio' name='radio' class='radio' value='off'>
$('.radio').on('change', function() {
alert( $(this).val() )
}).trigger('change')
它是一组简单的 2 个无线电输入和一个用于无线电输入值更改时的事件处理程序。还有一个.trigger('change') 是为了在页面加载时触发事件处理程序发生一次。
当页面加载时,事件处理程序被触发两次。第一个警报将显示on,第二个警报将显示off。但是当我手动单击单选按钮时,更改处理程序不会触发两次。
为什么在使用.trigger('change') 时会触发两次事件处理程序?为什么手动执行时行为不同?以编程方式触发事件处理程序而不发生两次的正确方法是什么?
【问题讨论】:
-
1.为什么使用
.trigger('change')时会触发两次事件处理程序?有两个单选按钮。所以$('.radio').trigger()被调用了两次。 2. 为什么手动执行时行为不同?当您手动触发时,它只调用事件更改而不是触发更改。 3. 以编程方式触发事件处理程序而不发生两次的正确方法是什么?如果要在第一个单选按钮中设置更改。触发像$('.radio').eq(0).trigger('change')
标签: javascript jquery forms input