2012-03-27 42 views
5

Mục tiêu: chạy một số chức năng trên .ajaxStart() nhưng chỉ khi được kích hoạt bởi một sự kiện nhất định.Truy cập đối tượng sự kiện toàn cục trong Firefox

Mã:

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

Vấn đề: này không hoạt động trong Firefox. Trong Internet Explorer và Chrome, tôi có thể truy cập vui vẻ vào đối tượng sự kiện mà không cần chuyển nó đến .ajaxStart(function(). Tuy nhiên, trong Firefox, đối tượng sự kiện là undefined.

Giải pháp rõ ràng nhưng không chính xác: chuyển đối tượng event cho hàm. điều này sẽ không hoạt động vì nó sẽ vượt qua sự kiện ajaxStart và kiểm tra của tôi sẽ không hoạt động nữa.

Câu hỏi: Làm cách nào để làm cho đối tượng sự kiện toàn cục có thể truy cập trong hàm này?

+0

Bạn có lẽ không nên. Nếu cuộc gọi lại không được truyền một đối tượng sự kiện trong Firefox, thì nó có thể không được kích hoạt để đáp ứng với một sự kiện :-) Thay vào đó, nó có thể là một 'móc' trong mã được gọi trực tiếp (không thông qua .trigger). –

+0

..không phải là: - /. Nó không rõ ràng từ các tài liệu hướng dẫn jQuery như thế nào chức năng này là phạm vi, nhưng nó chắc chắn được 'kích hoạt'. –

Trả lời

2

Bạn có thể lưu trữ đối tượng sự kiện trong bất kỳ biến nào ngoài có thể sử dụng trong chức năng khác.

Đây là bản trình diễn: http://jsfiddle.net/cVDbp/

+0

Cảm ơn rất nhiều, điều này hoạt động giống như một sự quyến rũ. – Wilgert

Các vấn đề liên quan