2012-03-27 18 views
5

El objetivo: ejecutar algunas funciones en .ajaxStart() pero solo si se desencadena por un determinado evento.Objeto de evento global de acceso en Firefox

El código:

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

El problema: Esto no funciona en Firefox. En Internet Explorer y Chrome puedo acceder felizmente al objeto del evento sin pasarlo al .ajaxStart(function(). Sin embargo, en Firefox, el objeto de evento es undefined.

La solución obvia pero incorrecta: pase el objeto event a la función. esto no funcionará porque pasará el evento ajaxStart y mis cheques ya no funcionarán.

La pregunta: ¿Cómo puedo hacer que el objeto de evento global esté accesible dentro de esta función?

+0

Es probable que no debería. Si la devolución de llamada no se está transmitiendo a un objeto de evento en Firefox, probablemente no se active en respuesta a un evento :-) Más bien, es probable que sea un 'gancho' en el código llamado directamente (no a través de .trigger). –

+0

..oooor no: - /. No está claro a partir de la documentación de jQuery cómo funciona esta función, pero definitivamente se "activa". –

Respuesta

2

Puede almacenar el Objeto de evento en cualquier variable que pueda usarse en otra función.

Aquí está la demostración: http://jsfiddle.net/cVDbp/

+0

Muchas gracias, esto funciona como un encanto. – Wilgert

Cuestiones relacionadas