以下のようなcheckboxとそれに紐付くlabelを子要素としてもつ要素にjQueryでclickイベントを実装すると
label上をクリックした際にイベントが2回重複して発生します。
html
<div id="box">
<input type="checkbox" id="chekbox">
<label for="checkbox">checkbox</label>
</div>
js
let count = 1;
$("#box").on("click", function(){
console.log(count+ " clicked");
count ++;
});
console(クリック後)
> 1 clicked
> 2 clicked
これはそもそもlabelがクリックされた時にlabelに紐付くinputもクリックされたとみなされるために起こるそうなので、
クリック対象をinputに向けることで解決する。
js
$("#box input").on("click", function(){
// クリック後にしたい処理
});
