同时检查多个复选框会导致$ apply已在进行中错误

时间:2017-06-08 18:47:49

标签: javascript jquery angularjs

当用户点击按钮选择单个表格中的所有复选框时,我会使用此代码。

$("#workOneTable .rsvLine input[type=checkbox]").each(function() {
    if (!$(this).prop("checked")) {
        this.click();
    }
});

当代码运行时,我得到$ apply已在进行中的错误,而我根本没有调用$ apply。 我必须对所选表格中的每个复选框执行单击,同时将复选框所在的每一行添加到列表数组中。如果我将此代码包装在$ timeout中,我不会收到错误,但我的复选框也不会被检查。

非常感谢任何帮助。

修改

这是工作代码。

if (!$(this).prop("checked")) {
 var a = $(this);
 setTimeout(function() {
     a.click();
 })
}

1 个答案:

答案 0 :(得分:1)

您的点击事件正在运行与当前摘要周期冲突的摘要周期。你可以使用setTimeout()

你可以改变这个

吗?
if ( !$( this ).prop( "checked" ) )
{
    this.click();
}

if ( !$( this ).prop( "checked" ) )
{
    var a = $(this);
    setTimeout(function(){a.click();})
}