jQuery是复选框上的属性更新未触发更改事件

Posted

技术标签:

【中文标题】jQuery是复选框上的属性更新未触发更改事件【英文标题】:jQuery is attr update on checkbox is not triggering change event 【发布时间】:2012-05-31 09:49:02 【问题描述】:

我有几个复选框和一个状态框,它会告诉您是否至少有一个复选框被选中。

我还有一个选中 All/None 复选框,用于切换复选框,但它不会触发分配给每个复选框的更改事件,因此如果使用选中 All/None 复选框,则状态永远不会更新。

这是我的实现:

http://jsfiddle.net/axl163/Fckvd/1/

【问题讨论】:

【参考方案1】:
function toggleChecked(status) 
    $(".chkbx").each( function() 
        $(this).prop("checked", status).change(); // you have to trigger the event
    );

DEMO

【讨论】:

是的,我知道 =) 不幸的是,我需要等待 10 分钟才能接受任何答案。 @AllenLiu 这并不不幸.. 基本上也是给 OP 一些时间来审查其他答案.. 而且只有 10 分钟 :) @Vega - 真的!你们两个太快了。【参考方案2】:

通过脚本对输入元素的任何更改都不会触发onchange 事件。

或者,您可以在更新更改输入时触发change(),如下所示,

$(this).prop("checked", status).change();

完整代码:

function toggleChecked(status) 
    $(".chkbx").each( function() 
        $(this).prop("checked", status).change();
    );

同时使用.prop 代替.attr

DEMO

【讨论】:

以上是关于jQuery是复选框上的属性更新未触发更改事件的主要内容,如果未能解决你的问题,请参考以下文章

表单更改时触发的事件

更新角度范围而不触发更改事件

为啥我的复选框更改事件没有被触发?

更改复选框未触发

Ext.js 2 复选框和事件通过更改侦听器触发两次

动态更改复选框不会触发 onChange?