我可以将事件处理程序强制到事件处理程序队列的底部吗?

时间:2018-03-07 19:32:09

标签: jquery html

在具有全选列的网格中,我想回复选中/取消选中的每个复选框,并更新“全选”标题的状态。

我更新“全选”复选框状态的代码如下:

//This is just an example to demonstrate the layout. The actual html is verbose and contains a series of spans and inputs

    <div class="a">
       <div class="b" id="c"></div>
       <div class="b"></div>
       <div class="b"></div>
       <div class="b"></div>
       <div class="b"></div>
    </div>

    $(".a").find(".b").not("#c").on("change",checkBoxCheck);

    function checkBoxCheck(){
        //selectAllSetChecked(areAllRowsSelected());
        console.log("areAllRowsSelected() : ")
    }

    function areAllRowsSelected() {
        //NOTE : edtCheckBoxUnchecked seems to be applied after this event fires
        return $(".a").find(".edtCheckBoxUnchecked").length == 0;
    }

上面的代码正确地调用了checkBoxCheck,但是,我正在检查一个动态应用于输入的类,并且该类似乎在“my”change事件触发后应用。

I am left with this scenario:

[X]
 O --CLICK --> X  areAllRowsSelected() : false
 X
 X
 X

[X]
 X --CLICK-->  O areAllRowsSelected() : true
 X
 X
 X

有没有办法可以确保我的处理程序是在事件链中调用的最后一个处理程序?也许另一种解决方案是尝试确定何时将特定类应用于复选框,但我认为不可能。

更新

我提出的解决方案看起来有点像hackish,但是,我的代码并没有应用这种风格,所以这并不需要我跳过篮球。

function checkBoxCheck(){
    var allChecked = $(".a").find(".edtCheckBoxUnchecked").length == 1;
    selectAllSetChecked(allChecked);
}

1 个答案:

答案 0 :(得分:0)

在指定的情况下你也可以这样做

$(document).on('click','.a>.b',function(){
var id = $(this).attr('id');
if(id=='c')
{
return;
}
checkBoxCheck();
})