Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

event is not defined in FireFox, but ok in Chrome and IE

I generate HTML using jQuery:

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

This works perfect for Chrome and IE8, but in FireFox I got an error: "event is not defined". I changed the code like this:

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

It works for Firefox, but not for Chrome and IE.

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

Why!? Help!!

like image 704
podeig Avatar asked Jun 04 '10 13:06

podeig


2 Answers

In IE and Chrome, event is resolving to window.event. Firefox doesn't have this property and instead provides an event to an event handler function by passing it as a parameter. jQuery abstracts this difference for you by providing an event object parameter in all browsers:

$("<a />")
    .append("demo")
    .click(function (evt) { DemoFunc(evt, value.Id) });
like image 147
Tim Down Avatar answered Oct 21 '22 15:10

Tim Down


If you have structured your code around working with the original event rather than the jQuery event, you can use evt.originalEvent to refer to the native event.

like image 37
Stephen Saucier Avatar answered Oct 21 '22 16:10

Stephen Saucier