Лучше выбрать соответствующий флажок как часть click
, например:
$('li').click(function(e) {
var isChecked = $(':checkbox:checked', this).length > 0;
console.log(isChecked);
e.stopPropagation();
});
Это находит флажок в <li>
, который был нажат, когда он был нажат.
Что касается части , почему , если вы нажимаете на флажок, вы устанавливаете его в значение true, затем событие распространяется на li
, который определяет, что флажок действительно установлен. Если флажок снят, если вы нажимаете на ярлык, флажок не устанавливается, поэтому он по-прежнему ложен. Если вы установили флажок , тогда щелкнул ярлык, вы увидите, что true
возвращается, потому что теперь он отмечен.
Если вы ожидаете, что метка поставит флажок, вам нужно связать его, используя атрибут for
метки, например:
<li>
<input id="myInput" type="checkbox" />
<label for="myInput">This is the label!</label>
</li>
Затем браузер обработает соединение, щелкнув метку, отметим флажок.