Tôi có một hộp kiểm mà tôi muốn thực hiện một số hành động Ajax trong sự kiện nhấp chuột, tuy nhiên hộp kiểm cũng nằm trong một thùng chứa có hành vi nhấp chuột riêng mà tôi không muốn chạy khi nhấp vào hộp kiểm. Mẫu này minh họa những gì tôi muốn làm:
$(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="http://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>
Tuy nhiên, tôi không thể tìm ra cách ngăn chặn sự kiện sủi bọt mà không khiến hành vi nhấp mặc định (hộp kiểm bị kiểm tra / không được chọn) không chạy.
Cả hai điều sau đây đều dừng sự kiện sủi bọt nhưng cũng không thay đổi trạng thái hộp kiểm:
event.preventDefault();
return false;