2012-03-27 10 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経由ではなく)直接呼び出されたコードの「フック」の可能性があります。 –

+0

です。おしゃれではありません: - /。 jQueryのドキュメントでは、この関数のスコープの仕方は不明ですが、間違いなく 'trigger'されています。 –

答えて

2

他の機能で使用できる変数よりもイベントオブジェクトを格納できます。

ここにデモがあります:http://jsfiddle.net/cVDbp/

+0

ありがとう、これは魅力のように動作します。 – Wilgert

関連する問題