2010-06-04 7 views
18

ho generato HTML usando jQuery:evento non è definito in FireFox, ma ok in Chrome e IE

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

Questo funziona perfetto per Chrome e IE8, ma in FireFox ho ottenuto un errore: "l'evento non è definito ". Ho cambiato il codice come questo:

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

Funziona per Firefox, ma non per Chrome e IE.

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

Perché !? Aiuto!!

risposta

36

In IE e Chrome, event è in fase di risoluzione su window.event. Firefox non ha questa proprietà e invece fornisce un evento a una funzione del gestore eventi trasmettendola come parametro. jQuery astrae questa differenza per voi, fornendo un parametro oggetto evento in tutti i browser:

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

Grazie, Tim, molto! Mi hai salvato il tempo! :-) – podeig

+0

In altre parole .. assicurati che "evt" o qualsiasi altra cosa tu stia utilizzando nella chiamata appaia anche nella parte function(). Stesso problema di http://stackoverflow.com/questions/20522887/referenceerror-event-is-not-defined-error-in-firefox – Malachi

1

Se si è strutturato il codice intorno a lavorare con l'evento originale, piuttosto che l'evento jQuery, è possibile utilizzare evt.originalEvent per fare riferimento al nativo evento.

Problemi correlati