2012-03-27 24 views
5

Das Ziel: einige Funktionen auf .ajaxStart() ausführen, aber nur, wenn durch ein bestimmtes Ereignis ausgelöst.Zugriff auf globales Ereignisobjekt in Firefox

Der Code:

$('#loading_indicator').ajaxStart(function() { 
    if(event != null){ 
      if(event.type == 'hashchange' || event.type == 'DOMContentLoaded'){ 
       $(this).show(); 
       $('#acontents').hide(); 
       $(this).ajaxComplete(function() { 
        $(this).hide(); 
        $('#acontents').show(); 
        bindClickOnTable(); 
        initFilterInput(); 
       }); 
      } 
    } 
}); 

Das Problem: Dies funktioniert nicht in Firefox. In Internet Explorer und Chrome kann ich glücklich auf das Ereignisobjekt zugreifen, ohne es an die .ajaxStart(function() zu übergeben. In Firefox ist das Ereignisobjekt jedoch undefined.

Die offensichtliche, aber falsche Lösung: übergeben Sie das Objekt event an die Funktion. Dies wird nicht funktionieren, da es das ajaxStart-Ereignis passieren wird und meine Überprüfungen nicht mehr funktionieren.

Die Frage: Wie mache ich das globale Ereignisobjekt innerhalb dieser Funktion zugänglich?

+0

Sie sollten wahrscheinlich nicht. Wenn der Callback kein Ereignisobjekt in Firefox ist, wird er wahrscheinlich nicht als Reaktion auf ein Ereignis ausgelöst :-) Vielmehr ist es wahrscheinlich ein "Haken" im direkt aufgerufenen Code (nicht über .trigger). –

+0

..oooor nicht: - /. Es ist unklar, aus der jQuery-Dokumentation, wie diese Funktion ist, aber es wird definitiv ausgelöst. –

Antwort

2

Sie können Ereignisobjekt in einer beliebigen Variablen speichern, die in anderen Funktionen verwendet werden kann. Hier

ist die Demo: http://jsfiddle.net/cVDbp/

+0

Vielen Dank, das funktioniert wie ein Zauber. – Wilgert

Verwandte Themen