2012-04-06 111 views
3

我在同一個元素上有一個mouseDown事件和一個click事件。當我點擊它時,mouseDown事件觸發(即警報「鼠標按下P」),但點擊事件不會。但是,如果我註釋掉mouseDown警報語句,則單擊事件將顯示其警報。爲什麼是這樣? http://jsfiddle.net/A8vhq/爲什麼在同一元素上的mouseDown事件觸發後,不會點擊事件觸發?

+0

而不是警報,請嘗試console.log,您將看到兩個事件觸發。檢查這裏的解釋http://api.jquery.com/click/ – DG3 2012-04-06 20:04:45

+0

謝謝所有......我實際上不使用警報進行測試,只是學習和試驗各種鼠標事件,並不能理解這種行爲。 – user1263226 2012-04-06 20:26:03

+0

DG3,我看着那個鏈接,沒有看到任何可以解釋這個特定觀察/行爲的東西嗎? – user1263226 2012-04-06 20:27:29

回答

6

這是因爲點擊從未發生過,會出現提示框時,它會中斷元素上的mouseup事件,從而中斷鼠標點擊。

使用console.log('message')來測試您的代碼而不是alert

+0

如果有人需要使用模式 - 例如,爲了中斷點擊運行代碼,然後完成點擊模式關閉 - 他們如何解決這個問題。它只爲我在Firefox中崛起。 – user1837608 2017-12-28 15:31:35

0

而不是alert,使用console.log它會工作。

現場演示:http://jsfiddle.net/A8vhq/1/


順便說一句,我已經重構了代碼位:

$('p').on('mousedown', function (e) { 
    console.log('Mouse pressed on ' + e.target.nodeName); 
}); 

$('p').on('click', function (e) { 
    console.log(e.target.nodeName + ' clicked'); 
}); 
0

只需將alert替換爲console.log或任何其他非模態輸出方式。

相關問題