gpt4 book ai didi

javascript - 在元素上单击触发事件触发输入复选框两次

转载 作者:行者123 更新时间:2023-12-01 03:06:46 26 4
gpt4 key购买 nike

当我单击 div 元素时,应该只触发单击复选框一次,但由于某种原因,我的事件被触发两次,我看到其他主题也有类似问题,但没有人帮助我

$('div').click(function(e) {
$('input').trigger('click');

check();
});

function check() {
if ($('input').is(':checked')) {
console.log('input cheked')
} else {
console.log('unchecked')
}
}
.test {
height: 150px;
width: 150px;
background: red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="test">
<input type="checkbox" name="">
</div>

最佳答案

问题是因为点击发生在 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>

关于javascript - 在元素上单击触发事件触发输入复选框两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59875484/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com