2012-03-27 9 views
5

L'obiettivo: esegue alcune funzioni su .ajaxStart() ma solo se attivato da un determinato evento.Accesso all'oggetto evento globale in Firefox

Il codice:

$('#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(); 
       }); 
      } 
    } 
}); 

Il problema: Questo non funziona in Firefox. In Internet Explorer e Chrome posso accedere felicemente all'oggetto evento senza passarlo allo .ajaxStart(function(). In Firefox, tuttavia, l'oggetto evento è undefined.

La soluzione ovvia ma non corretto: passaggio dell'oggetto event alla funzione. questo non funzionerà perché passerà l'evento ajaxStart e le mie verifiche non funzioneranno più.

La domanda: Come si rende accessibile l'oggetto evento globale all'interno di questa funzione?

+0

Probabilmente non si dovrebbe. Se il callback non viene passato a un oggetto evento in Firefox, probabilmente non viene attivato in risposta a un evento :-) Piuttosto, è probabilmente un 'hook' nel codice chiamato direttamente (non tramite .trigger). –

+0

.. no non: - /. Non è chiaro dalla documentazione di jQuery come questa funzione è scopata, ma sicuramente viene "innescata". –

risposta

2

È possibile memorizzare l'oggetto evento in qualsiasi variabile rispetto a quella che può essere utilizzata in un'altra funzione.

Ecco la demo: http://jsfiddle.net/cVDbp/

+0

Grazie mille, funziona come un fascino. – Wilgert

Problemi correlati