2012-03-27 5 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(); 
       }); 
      } 
    } 
}); 

문제 :이 파이어 폭스에서 작동하지 않습니다. Internet Explorer와 Chrome에서는 .ajaxStart(function()으로 전달하지 않고도 즐겁게 이벤트 객체에 액세스 할 수 있습니다. 그러나 Firefox에서는 이벤트 객체가 undefined입니다.

분명하지만 잘못된 해결책 :event 개체를 함수에 전달하십시오. 이것은 ajaxStart 이벤트를 통과 할 것이고 나의 수표는 더 이상 작동하지 않기 때문에 작동하지 않을 것입니다.

질문 :이 함수 내에서 전역 이벤트 객체에 액세스하려면 어떻게해야합니까?

+0

아마 안됩니다. 콜백이 Firefox에서 이벤트 객체를 전달하지 않으면 이벤트에 대한 응답으로 트리거되지 않은 것 같습니다 .-) 대신, .trigger를 통해 직접 호출되는 코드에서 '후크'가 발생할 가능성이 큽니다. –

+0

..oooor not : - /. jQuery 문서에서이 함수의 범위가 어떻게되는지는 명확하지 않지만 확실히 '트리거'됩니다. –

답변

2

이벤트 개체를 다른 함수에서 사용할 수있는 변수로 저장할 수 있습니다.

여기에 데모가 있습니다. http://jsfiddle.net/cVDbp/

+0

고마워, 이것은 매력처럼 작동합니다. – Wilgert