考慮此示例代碼:爲什麼在調用event.preventDefault()之後用JavaScript切換複選框/單選按鈕失敗?
<span>
<input type="checkbox">
</span>
$('span').click(function(e) {
e.preventDefault();
$(':checkbox')[0].checked = true;
});
從我所知,這應該發生:
preventDefault()
應防止複選框從由被檢查瀏覽器的默認b ehavior,即使事件處理程序在上面的DOM層次結構中。這部分工作正常。- 設置
.checked = true
應該作爲,我相信它應該獨立於我已取消的事件的瀏覽器的默認操作。這部分似乎是越野車,好像preventDefault()
正在影響它 - 刪除preventDefault()
,它按預期工作。
複選框保持未選中狀態的原因是什麼?
我在Chrome 33和Firefox 27上測試過,所以這似乎並不是一個瀏覽器錯誤。
這個問題主要是由於好奇擴展我的DOM /事件模型知識。我不想要解決方法,但我想知道爲什麼這個例子失敗。
單擊文本時,請參見[Fiddle](http://jsfiddle.net/R2Awe/10/)e.preventDefault()不與默認行爲接口 – Satpal
@Satpal click事件被綁定到跨度而不是孩子,那麼究竟是怎麼回事。 – Jai
我真的很困惑什麼發生,好問題! –