2010-06-04 18 views
18

Ben HTML oluşturmak jQuery kullanmıyor:olay FireFox'ta tanımlanan, ama Tamam Chrome ve Internet Explorer

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

Bu Chrome ve IE8 için mükemmel çalışır, ancak FireFox'ta bir hata var: "Olay tanımlanmadı ". Bu gibi bir kod değiştirildi: Chrome ve IE için değil

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

O Firefox için çalışır, ancak.

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

Neden !? Yardım et!!

cevap

36

IE ve Chrome'da, event, window.event'a çözümleniyor. Firefox bu özelliğe sahip değildir ve bunun yerine bir olay işleyici işlevine parametre olarak ileterek bir olay sağlar. Eğer kod etrafında yerine jQuery olay daha özgün olay ile çalışan yapılandırılmış varsa

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

Teşekkürler, Tim, çok! Zamanımı kurtardın! :-) – podeig

+0

Başka bir deyişle .. 'evr' veya çağrıda kullandığınız her şey, işlev() bölümünde de göründüğünden emin olun. Http://stackoverflow.com/questions/20522887/referenceerror-event-is-not-defined-error-in-firefox adresindeki aynı sorun – Malachi

1

, yerel başvurmak için evt.originalEvent kullanabilirsiniz: jQuery tüm tarayıcılarda bir olay nesnesi parametresi sağlayarak sizin için bu farkı soyutlar Etkinlik.

İlgili konular