【问题标题】:Cannot detect checkbox click or change event with jQuery无法使用 jQuery 检测复选框单击或更改事件
【发布时间】:2021-05-10 13:50:36
【问题描述】:

这是一个真正的谜,但不知何故,我无法检测到复选框单击或使用以下代码进行更改:

jQuery(document).ready(function () {
   jQuery(document).on("click", "#item_configuration_item_selected", function() {
      console.log("click");
   });
});

它适用于任何其他元素,但不适用于复选框。

当我尝试用这个来检测被点击的元素时:

jQuery('body').click(function(event){ 
    var id = event.target;
    console.log(id);
});

然后,它再次显示任何其他元素的单击元素 ID,复选框除外。我只是想弄清楚这一点而发疯。

元素 html 如下所示:

<div class="span3">
<label for="item_configuration_item_selected" class="checkbox">
    <input type="checkbox" class="fabrikinput " name="item_configuration_item_selected[0][0]" id="item_configuration_item_selected" value="1"><span>MyLabel</span></label>
</div>

任何提示将不胜感激。

编辑添加的sn-p

jQuery(document).ready(function() {
  jQuery(document).on("click", "#item_configuration_item_selected", function() {
    console.log("click");
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="span3">
  <label for="item_configuration_item_selected" class="checkbox">
        <input type="checkbox" class="fabrikinput " name="item_configuration_item_selected[0][0]" id="item_configuration_item_selected" value="1"><span>MyLabel</span></label>
</div>

【问题讨论】:

  • $("#item_configuration_item_selected").change(function() {})你累了吗?
  • 如果我用你的代码创建一个 sn-p 一切正常
  • 您是否有多个 id 为 item_configuration_item_selected 的元素?你有css吗?例如,关闭指针事件?
  • 与上面的评论一样,我已经使用您的代码添加了一个 sn-p,它工作正常。请更新 sn-p 以演示问题。

标签: javascript jquery checkbox


【解决方案1】:

谢谢大家,但 Prakash 的建议 "$("#item_configuration_item_selected").change(function() {})" 是唯一有效的方法。太感谢了!我仍然很困惑为什么,但只要它成功了,我就可以忍受:)

【讨论】:

  • 当您使用事件委托时,链中可能有另一个事件在到达您的事件之前确实 stopPropagation(或返回 false)。无法单独判断。
猜你喜欢
  • 2011-10-25
  • 1970-01-01
  • 1970-01-01
  • 2012-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-19
  • 2012-06-27
相关资源
最近更新 更多