2009-02-28 6 views
2

ich einige Ereignisbindungen mit jQuery versuchen, und ich habe diesen einfachen Code in meinem Dokument bereit:JavaScript/jQuery: Ereignis ausgelöst zweimal

$(document).ready(function() { 
    $("p a").each(function(i, selected){ 
     $(selected).hover(
      function(event) { alert('over: ' + event.type); }, 
      function(event) { alert('out: ' + event.type); }); 
     } 
    ) 
}); 

Also, wenn ich die Maus über einen Link das ist innen ein bewegen Absatz (Selektor ist "pa") Alarm-Popup zweimal. Mouseenter und mouseleave werden also zweimal ausgelöst.

Dies geschieht nur in Google Chrome. Im Internet   Explorer   7, Firefox 3, Opera und Safari werden beide Ereignisse nur einmal ausgelöst.

Warum passiert das?

Antwort

6

Ich denke, irgendwie verursacht die Warnung tatsächlich die zusätzlichen Ereignisse in Chrome. Mit dem folgenden Code sehe ich nur ein Ereignis.

$(document).ready(function() { 
    $("p a").each(function(i, selected){ 
    $(selected).hover( 
     function(event) { $("p").append('<br>over: ' + event.type); }, 
     function(event) { $("p").append(' out: ' + event.type); }); 
    } 
) 
}); 
+1

Yup - Sobald die Warnung angezeigt wird, wird ein anderes mouseover-Ereignis ausgelöst. – Shog9

+1

Danke für Ihre Antwort. Ich habe Safari überprüft - dort "tötet" die Warnung das mouseleave Ereignis ... – emirc

8

Ich nehme an, dies Ihre Frage nicht beantworten, aber dieser Beitrag kam, während meine eigenen Fehler zu erforschen. Es stellte sich heraus, dass ich versehentlich zweimal ein externes Javascript eingefügt hatte.

Nur gedacht, es wäre lohnend, dies für andere zu dokumentieren, die das gleiche Problem haben. Ein offensichtlicher Fehler, der eine Weile gedauert hat!

+0

Danke das war mein Problem !! ;) +1 –