javascript - 如何在复选框单击时停止事件冒泡

标签 javascript jquery checkbox events

我有一个复选框,我想对单击事件执行一些 Ajax 操作,但是该复选框也在一个容器内,它具有自己的单击行为,我不想在单击复选框时运行它。这个示例说明了我想要做什么:

$(document).ready(function() {
  $('#container').addClass('hidden');
  $('#header').click(function() {
    if ($('#container').hasClass('hidden')) {
      $('#container').removeClass('hidden');
    } else {
      $('#container').addClass('hidden');
    }
  });
  $('#header input[type=checkbox]').click(function(event) {
    // Do something
  });
});
#container.hidden #body {
  display: none;
}
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<div id="container">
  <div id="header">
    <h1>Title</h1>
    <input type="checkbox" name="test" />
  </div>
  <div id="body">
    <p>Some content</p>
  </div>
</div>

但是,我不知道如何在不导致默认点击行为(复选框变为选中/未选中)不运行的情况下停止事件冒泡。

以下两项均会停止事件冒泡,但也不会更改复选框状态:

event.preventDefault();
return false;

最佳答案

替换

event.preventDefault();
return false;

event.stopPropagation();

event.stopPropagation()

Stops the bubbling of an event to parent elements, preventing any parent handlers from being notified of the event.

event.preventDefault()

Prevents the browser from executing the default action. Use the method isDefaultPrevented to know whether this method was ever called (on that event object).

关于javascript - 如何在复选框单击时停止事件冒泡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1164213/

相关文章:

javascript - jquery forEach 函数用于显示/列出动态元素

c# - 在 C# 中隐藏下拉列表

javascript - ASP.NET JQuery .click() 在 IE11 中不起作用

javascript - 实现自动登录第三方网站

javascript array.sort 不适用于整数

javascript - 如何循环 jQuery 代码?

javascript - 在 setTimeout 中传递 this.method 不起作用?

javascript - 跨浏览器更改 A 标签的 HREF

javascript - 单击 li 时无法选中复选框

c# - 在 CheckBox 上设置 CheckState 不起作用