我有一个id为myopt的复选框,我有一个点击事件处理程序,如下所示;
$("#globalBody").on("click", "#myopt", function (event) {
if ($(this).prop("checked")) {
// do something
} else {
// do something
}
});
现在在我的代码中,我做了
$("#myopt").attr("checked",true);
我的问题是这不会触发上面的点击事件处理程序。如果我手动点击复选框,它就会被调用。
问题是什么?
答案 0 :(得分:5)
您需要使用.trigger()
以编程方式调用点击处理程序
执行附加到给定事件类型的匹配元素的所有处理程序和行为。
脚本
$("#myopt").prop("checked",true).trigger('click');
注意:我建议您使用change
事件
$("#globalBody").on("change", "#myopt", function (event) {
if (this.checked) {
// do something
} else {
// do something
}
});
//Change
$("#myopt").prop("checked",true).trigger('change');
答案 1 :(得分:0)
请检查此小提琴,请https://jsfiddle.net/kwp7sjwf/2/
根据您的需要,我有两个版本。据我了解,您想要的是点击#globalBody
内的某个位置并检查myopt
复选框的状态。在上面的小提琴中我做到了这一点,但是我已经在评论中放置了一个处理第二个版本的代码块,只有在myopt
复选框状态发生变化时才能收听(直接点击复选框) )。
希望它有所帮助