2012-05-14 3 views
8

paar Minuten, antwortete ich auf die Frage:
What is the difference between focusin/focusout vs focus/blur in jQuery?Warum event.bubbles ist falsch für "focusin" und "focusout"? Vor

Die Antwort war:

Kurze Antwort: focusin & thinsp; & thinsp; & thinsp; Blasen, focus nicht.
              focusout Blasen, blur & thinsp; nicht.

Ich habe es getestet, es ist wahr, aber ich stieß auf eine seltsame Sache, während ein DEMO einzurichten versuchen:

$('#test').on('focusin focusout focus blur change', function(e) { 
    console.log(e.type + 'event bubles? : ' + e.bubbles); 
});​ 

focusin und focusout gib mir e.bubbles == false

Ist es ein Fehler von jQuery oder Vermisse ich das Offensichtliche hier?

+0

False/false in Chrome 18 (falls Sie einige Browsernotizen möchten ...) – jmar777

Antwort

4

Klingt wie ein Fehler in jQuery. Haben Sie dies in einem Browser getestet, der focusin und focusout nativ unterstützt? (Z. B. IE?) Wenn nicht, testen Sie die Flagge für jQuery's emulierte Unterstützung.

Ich habe oben das "Klingt wie ein Fehler" -Bit durchgestrichen, weil jQuery nicht behauptet, die Eigenschaft bubbles in der Dokumentation zu normalisieren. Da es dies nicht garantiert, muss es es bei emulierten Ereignissen nicht unterstützen. (Beachten Sie, dass ich, wenn ich Ihre Demo auf IE7 ausführen, undefined bekomme, da IE7 die Eigenschaft DOM3 Events bubbles nicht unterstützt.) Noch ein Problem, aber vielleicht kein Bug.

:-)

aktualisieren:

Antwort auf the jQuery ticket:

Die Dokumentation erhebt keinen Anspruch auf die Event.bubbles Eigenschaft zu normalisieren. Sie können es in event.originalEvent suchen, aber das wird unabhängig von der Plattform unnormalisiert sein.

Also meine obige Vermutung war richtig. Es ist kein Bug, weil sie nicht behaupten, das zu normalisieren. :-)

+1

Getestet mit 'chrome' – gdoron

+0

WOW Ich habe einen Bug in jQuery gefunden, gibt es ein Badge dafür? Ich werde zu Meta ... :) – gdoron

+0

@ Gdoron: Nur prahlen Rechte. :-) –