2012-04-06 20 views
3

Ich habe ein mouseDown-Ereignis und ein Click-Ereignis für dasselbe Element. Wenn ich darauf klicke, wird das Ereignis mouseDown ausgelöst (d. H. "Maus auf P gedrückt"), aber das click -Ereignis nicht. Wenn ich jedoch die mouseDown-Warnungsanweisung auskommentiert, zeigt das click-Ereignis seine Warnung an. Warum ist das? http://jsfiddle.net/A8vhq/Warum wird nach dem mouseDown -Ereignis auf demselben Element nicht ausgelöst, wenn ein Ereignis ausgelöst wird?

+0

anstelle der Warnung, versuchen Sie console.log, Sie sehen beide Ereignisse ausgelöst. Überprüfen Sie die Erklärung hier http://api.jquery.com/click/ – DG3

+0

Vielen Dank ... Ich verwende keine Warnungen zum Testen, nur lernen und experimentieren mit verschiedenen Mausereignisse und konnte dieses Verhalten nicht verstehen. – user1263226

+0

DG3, schaute ich und diese Verbindung und sah nichts, das diese spezifische Beobachtung/Verhalten erklären würde? – user1263226

Antwort

6

Das ist, weil das Klicken nie geschieht, wenn die Warnmeldung angezeigt wird es unterbricht die mouseup-Ereignis auf dem Element, wodurch der Mausklick unterbrochen wird.

Verwenden Sie console.log('message'), um Ihren Code anstelle von alert zu testen.

+0

Wenn jemand ein Modal verwenden muss - zum Beispiel, um den Code zum Ausführen von Klicks zu unterbrechen, dann schließen Sie den Klick auf Modal Close - wie können sie dieses Problem umgehen. Es taucht nur in Firefox für mich auf. – user1837608

0

Verwenden Sie statt alertconsole.log und es wird funktionieren.

Live-Demo:http://jsfiddle.net/A8vhq/1/


BTW, habe ich den Code ein wenig Refactoring:

$('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

ersetzen einfach alert mit console.log oder anderer nicht modalen Ausgang Weise.

Verwandte Themen