2010-06-04 45 views
18

tôi tạo ra HTML sử dụng jQuery:sự kiện không được định nghĩa trong FireFox, nhưng ok trong Chrome và IE

$("<a />") 
    .append("demo") 
    .click(function() { DemoFunc(event, value.Id) }) 

này hoạt động hoàn hảo cho Chrome và IE8, nhưng trong FireFox Tôi đã nhận ra lỗi: "sự kiện không được định nghĩa ". Tôi đã thay đổi mã như sau:

.attr("onclick", "DemoFunc(event, " + value.Id + ")") 

Nó hoạt động cho Firefox, chứ không phải cho Chrome và IE.

DemoFunc = function (e, assocGroupId) { 
    var target = (e.target) ? $(e.target) : $(e.srcElement); 
    .... 
} 

Tại sao !? Cứu giúp!!

Trả lời

36

Trong IE và Chrome, event đang giải quyết thành window.event. Firefox không có thuộc tính này và thay vào đó cung cấp một sự kiện cho một hàm xử lý sự kiện bằng cách chuyển nó thành một tham số. jQuery tóm tắt sự khác biệt này cho bạn bằng cách cung cấp một tham số đối tượng sự kiện trong tất cả các trình duyệt:

$("<a />") 
    .append("demo") 
    .click(function (evt) { DemoFunc(evt, value.Id) }); 
+0

Cảm ơn bạn, Tim, rất nhiều! Bạn đã tiết kiệm thời gian của tôi! :-) – podeig

+0

Nói cách khác .. hãy chắc chắn rằng 'evt' hoặc bất cứ điều gì bạn đang sử dụng trong cuộc gọi cũng xuất hiện trong phần function(). Vấn đề tương tự như trong http://stackoverflow.com/questions/20522887/referenceerror-event-is-not-defined-error-in-firefox – Malachi

1

Nếu bạn đã có cấu trúc mã của bạn xung quanh làm việc với các sự kiện ban đầu chứ không phải là sự kiện jQuery, bạn có thể sử dụng evt.originalEvent để chỉ nguồn gốc biến cố.

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