多个复选框jquery手动点击复选框触发,但“代码点击”一个没有

时间:2014-07-07 15:20:23

标签: javascript jquery html checkbox

我有多个复选框,当选中所有复选框时 - 它们会检查父复选框。选中该父复选框后,将触发警报并且图像在...中消失

问题是,当使用jquery检查父复选框时,它们不会显示警报或交换图像,仅在手动选中复选框时才有效。

这是我的代码:     //父复选框 - 多个复选框

$("input[type='checkbox'].PARENT-CHECKBOXES").change(function(){
    var a = $("input[type='checkbox'].PARENT-CHECKBOXES");
    if(a.length == a.filter(":checked").length){
        alert('ACTION COMPLETED');
        TweenMax.to("#fade-in-image", 0.1, {autoAlpha: 1});
    }
});

// Child Checkboxes -multiple checkboxes

$("input[type='checkbox'].CHILD-CHECKBOX").change(function(){
    var step1 = $("input[type='checkbox'].CHILD-CHECKBOX");
    if(step1.length == step1.filter(":checked").length){
        alert('SKU OPERATION COMPLETE');
        $("#PARENT-CHECKBOX1").prop("checked", true);           
    }
});

编辑:所以我编辑了我的代码,这是工作结果。

var a = $("input[type='checkbox'].PARENT-CHECKBOXES");

$("input[type='checkbox'].CHILD-CHECKBOX").change(function(){
var step2 = $("input[type='checkbox'].CHILD-CHECKBOX");
if(step2.length == step2.filter(":checked").length){
        alert('Operation Complete');
        $("#PARENT-CHECKBOX1").prop("checked", true).change();
    }
if(a.length == a.filter(":checked").length){
    alert('ACTION COMPLETED');
    TweenMax.to("#fade-in-image", 0.1, {autoAlpha: 1});
}
});

2 个答案:

答案 0 :(得分:2)

以编程方式选中/取消选中复选框时,它不会自动触发(如您所见)。您需要使用.trigger()来触发更改事件。

$("#PARENT-CHECKBOX1").trigger("change");

$("#PARENT-CHECKBOX1").change();

答案 1 :(得分:2)

您需要在检查后触发change事件 - 它不会自动触发 - 如下所示:

$("#PARENT-CHECKBOX1").prop("checked", true).trigger("change");