2012-03-27 35 views
5

目標:.ajaxStart()上運行某些功能,但僅限於由特定事件觸發。在Firefox中訪問全局事件對象

代碼:

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

問題:這並不工作在Firefox。在Internet Explorer和Chrome中,我可以愉快地訪問事件對象,而不必將它傳遞給.ajaxStart(function()。但是,在Firefox中,事件對象是undefined

顯而易見但不正確的解決方案:傳遞event對象的功能。這將無法正常工作,因爲它會通過ajaxStart事件,我的檢查將不再工作。

問題:如何在此函數中訪問全局事件對象?

+0

你可能不應該。如果回調沒有在Firefox中傳遞給一個事件對象,那麼它可能不會被觸發以響應事件:-)相反,它可能是直接調用的代碼中的「鉤子」(而不是通過.trigger)。 – 2012-03-27 10:03:29

+0

..好的不是: - /。目前還不清楚jQuery文檔中這個函數的作用範圍,但它肯定會被觸發。 – 2012-03-27 10:06:02

回答

2

您可以將事件對象存儲在任何變量中,但不能在其他函數中使用。

這裏是演示:http://jsfiddle.net/cVDbp/

+0

非常感謝,這很有魅力。 – Wilgert 2012-03-27 10:46:04

相關問題