Chekbox点击事件未在检查时触发

时间:2015-05-27 11:32:04

标签: javascript jquery

我有一个id为myopt的复选框,我有一个点击事件处理程序,如下所示;

$("#globalBody").on("click", "#myopt", function (event) {
    if ($(this).prop("checked")) {
        // do something
    } else {
        // do something
    }
});

现在在我的代码中,我做了

$("#myopt").attr("checked",true);

我的问题是这不会触发上面的点击事件处理程序。如果我手动点击复选框,它就会被调用。

问题是什么?

2 个答案:

答案 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复选框状态发生变化时才能收听(直接点击复选框) )。 希望它有所帮助