jQuery更改复选框的属性不会触发change事件

7
我有几个复选框和一个状态框,告诉您是否至少勾选了其中一个复选框。
我还有一个全选/全不选的复选框,可以切换复选框,但它不会触发分配给每个复选框的更改事件,因此如果使用全选/全不选复选框,则永远不会更新状态。
以下是我的实现: http://jsfiddle.net/axl163/Fckvd/1/
2个回答

15
function toggleChecked(status) {
    $(".chkbx").each( function() {
        $(this).prop("checked", status).change(); // you have to trigger the event
    });
}

演示


是的,我知道 =) 不幸的是,在我能接受任何答案之前,我需要等待10分钟的限制。 - Allen Liu
1
@AllenLiu 这并不是不幸..这基本上是给 OP 一些时间去查看其他答案..而且只有10分钟 :) - Selvakumar Arumugam
@Vega - 确实!你俩太快了。 - Allen Liu

6
任何通过脚本对输入元素进行的更改都不会触发onchange事件。或者,您可以在更新输入时触发change(),如下所示:
$(this).prop("checked", status).change();

完整代码:

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

同时使用 .prop 代替 .attr

演示


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接