2010-06-04 11 views
18

genero HTML usando jQuery:evento no se define en Firefox, pero está bien en Chrome e IE

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

Esto funciona perfecto para Chrome y IE8, pero en Firefox que tiene un error: "evento no se define ". he cambiado el código como el siguiente:

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

Funciona para Firefox, pero no para Chrome e IE.

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

¿Por qué? ¡¡Ayuda!!

Respuesta

36

En IE y Chrome, event se está resolviendo en window.event. Firefox no tiene esta propiedad y, en su lugar, proporciona un evento a una función de controlador de eventos pasándolo como un parámetro. jQuery abstrae esta diferencia para usted, proporcionando un parámetro de objeto de evento en todos los navegadores:

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

¡Gracias, Tim, mucho! ¡Me salvaste el tiempo! :-) – podeig

+0

En otras palabras ... asegúrese de que 'evt' o lo que sea que esté usando en la llamada también aparezca en la parte de la función(). Mismo problema que en http://stackoverflow.com/questions/20522887/referenceerror-event-is-not-defined-error-in-firefox – Malachi

1

Si ha estructurado su código en torno a trabajar con el evento original en lugar del evento jQuery, puede utilizar evt.originalEvent para referirse a los nativos evento.

Cuestiones relacionadas