【问题标题】:Chekbox click event not getting triggered on checked复选框单击事件未在选中时触发
【发布时间】:2015-08-09 11:11:46
【问题描述】:

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

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

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

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

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

有什么问题?

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    请检查这个小提琴https://jsfiddle.net/kwp7sjwf/2/

    根据您的需要,我有两个版本。据我了解,您想要的是单击#globalBody 内的某处并检查myopt 复选框的状态。在上面的小提琴中,我这样做了,但是我在 cmets 中放置了一个处理第二个版本的代码块,这是您只想在 myopt 复选框状态更改时才收听的情况(直接单击复选框)。 希望对你有帮助

    【讨论】:

      【解决方案2】:

      您需要使用.trigger() 以编程方式调用点击处理程序

      执行所有附加到给定事件类型的匹配元素的处理程序和行为。

      脚本

      $("#myopt").prop("checked",true).trigger('click');
      

      注意:我建议你使用change event

      $("#globalBody").on("change", "#myopt", function (event) {
          if (this.checked) {
              // do something
          } else {
              // do something
          }
      });
      
      //Change
      $("#myopt").prop("checked",true).trigger('change');
      

      【讨论】:

      • 有什么理由使用更改而不是点击?
      • 哦,是的......上面的代码实际上取消选中复选框!
      • @testndtv,这就是你的意图?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-07
      相关资源
      最近更新 更多