У меня есть флажок, в котором я хочу выполнить какое-либо действие Ajax в событии клика, однако флажок также находится внутри контейнера с его собственным поведением кликов, который я не хочу запускать при щелчке по флажку. Этот пример иллюстрирует то, что я хочу сделать:
<html lang="en">
<head>
<title>Test</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
$(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
});
});
</script>
<style type="text/css">
#container.hidden #body {
display:none;
}
</style>
</head>
<body>
<div id="container">
<div id="header">
<h1>Title</h1>
<input type="checkbox" name="test" />
</div>
<div id="body">
<p>Some content</p>
</div>
</div>
</body>
</html>
Тем не менее, я не могу понять, как остановить всплеск событий, не вызывая по умолчанию поведение кликов (флажок установлен или не установлен), чтобы не запускаться.
Оба эти параметра останавливают пузырьковое событие, но также не изменяют состояние флажка:
event.preventDefault();
return false;