jquery checkbox click事件的一个坑

问题点

例子:https://blog.csdn.net/webjhh/article/details/50857381

1
2
3
4
5
6
7
$("#cs1").click(function(){
    alert(this.checked);
});

$("#cs2").click(function(){
    $("#cs1").click();//或者$("#cs1").trigger('click');
});

jQuery 函数的执行顺序与预想的不一样,这种问题在使用jQuery的过程中多次出现,也有的是event事件绑定顺序不一致。

解决方案

将function中待执行的方法放入 setTimeout 中延迟执行。

1
2
3
4
5
6
7
8
9
$("#cs1").click(function(){
setTimeout(function () {
alert(this.checked);
}, 100)
});

$("#cs2").click(function(){
    $("#cs1").click();//或者$("#cs1").trigger('click');
});