在回答另一個問題時,我遇到了一些我認爲是非常奇怪的行爲,我想知道這是否應該被視爲一個錯誤,或者它是否在規範中。在點擊事件處理程序觸發之前,它是否會改變複選框的狀態?
此行爲可以在此jsFiddle處觀察到。
考慮下面的輸入框元素:
<input type="checkbox" id="check" />
如果要應用以下click事件處理(我們將使用jQuery這裏保持示例簡潔):
$('#check').on('click', function (e) {
console.log(this.checked);
return false; //This prevents the default action from occurring.
});
你'd參見開發者控制檯:
true
這裏實際發生的是ch在進入click事件處理程序之前,eckbox的狀態正在發生變化。但是,如果單擊事件處理程序阻止默認操作,則複選框的狀態爲還原爲。
這對我來說似乎是一個錯誤。我希望複選框的狀態僅在點擊事件處理程序後更新,如果默認操作未被阻止。
這是一個錯誤?這是否應該向不同的瀏覽器分銷商報告?
@ j08691我沒有在我的搜索中看到,謝謝。這些基本上是同義的問題,但我不同意在那裏接受的答案中表達的觀點。雖然我理解這裏正在進行的機制,並且可以想象一個可以以他們觀察到的方式實施的場景,但我不同意他們必須以這種方式實施。我覺得在處理完所有事件處理程序後,狀態會更直觀。即使使用交易系統,也只需交換交易中的評估順序。 – crush