Рассмотрим этот пример кода:
<span>
<input type="checkbox">
</span>
$('span').click(function(e) {
e.preventDefault();
$(':checkbox')[0].checked = true;
});
Насколько мне известно, это должно произойти:
-
preventDefault()
должен помешать проверке флажка по умолчанию браузера, даже если обработчик события указан выше в иерархии DOM. Эта часть работает правильно. - Настройка
.checked = true
должна работать, как я полагаю, она должна быть независимой от действия браузера по умолчанию для события, которое я отменил. Эта часть кажется ошибочной, как будтоpreventDefault()
влияет на нее - удалитеpreventDefault()
и она работает по назначению.
Какова фактическая причина, по которой флажок остается неизменным?
Я тестировал на Chrome 33 и Firefox 27, поэтому это не похоже на ошибку браузера.
Этот вопрос в основном объясняется любопытством расширить мои знания модели DOM/Event. Мне не нужны обходные пути, но я хочу знать, почему этот пример не работает.