我有一个复选框,当点击事件发生时,我想对其执行一些 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;