事實上,mousedown
事件會先被觸發並檢查您的單選按鈕。您可以通過按住單選按鈕輕鬆驗證此情況。但是,如果mousedown
和mouseup
都被觸發併成功運行,則幾乎所有GUI元素都只能執行或更改。
見這個例子(demo):
$(function() {
$('[name="test"]').each(function() {
$(this).mousedown(function(e) {
e.preventDefault();
if ($(this).is(':checked')) {
alert('This radio button was checked in mousedown');
} else {
alert('This radio button was not checked in mousedown');
}
});
$(this).click(function(e) {
e.preventDefault();
if ($(this).is(':checked')) {
alert('This radio button was checked');
} else {
alert('This radio button was not checked');
}
});
});
});
正如你可以看到mousedown
被最早被解僱,它會提醒「這單選按鈕並沒有在鼠標按下檢查」。 click
事件被阻止,因爲實際上mouseup
事件被惡意警報取消。但是,如果您使用console.log
,則您會注意到click
仍然被執行,單選按鈕仍然被虛擬檢查。
但是,如果你check for active radio buttons你會注意到沒有活動。 click
元素的行爲有時令人惱火,但e.preventDefault()
會做它的工作,不用擔心。
+1,全面。 – undefined 2012-04-12 05:59:32
正是我需要知道的。謝謝! – 2012-04-12 06:06:59
你可以在Safari 7和Chrome 33上比較它。結果是不同的,我也面臨同樣的問題。 – 2014-04-10 05:43:33