Смотрите, какая интересная ситуация:
https://jsfiddle.net/s9hgryeb/
При клике на
span у нас алерт выведет дважды - и понятно почему (свойство label, браузер эмулирует клик по чекбоксу). Но как отличить реальный клик по label от эмулированого?
На ум приходит только проверять
event.target.tagName !== "INPUT"
. Но вдруг там безобидный input? Скажем, image, а рядом с ним за компанию уже checkbox? Как тогда?