Проблема заключается в том, что щелчок происходит на div
, который вызывает click
на дочернем флажке, который, в свою очередь, распространяется по DOM и снова запускает обработчик щелчков на div
.
Если вы пытаетесь создать большую область попадания для флажка, просто используйте элемент label
. Затем вы получаете это поведение бесплатно, без необходимости JS.
Если вы хотите узнать состояние флажка при его изменении, подключите к нему обработчик события change
. Попробуйте это:
$(':checkbox').on('change', function() {
if (this.checked) {
console.log('input checked')
} else {
console.log('unchecked')
}
});
.test {
height: 150px;
width: 150px;
background: red;
display: block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label class="test">
<input type="checkbox" name="">
</label>