событие не определено в FireFox, но нормально в Chrome и IE - PullRequest
18 голосов
/ 04 июня 2010

Я генерирую HTML, используя jQuery:

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

Это прекрасно работает для Chrome и IE8, но в FireFox я получил ошибку: «событие не определено». Я изменил код следующим образом:

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

Работает для Firefox, но не для Chrome и IE.

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

Почему !? Помогите!!

Ответы [ 2 ]

36 голосов
/ 04 июня 2010

В IE и Chrome event разрешается до window.event. Firefox не имеет этого свойства и вместо этого предоставляет событие в функцию-обработчик события, передавая его в качестве параметра. jQuery абстрагирует вас от этой разницы, предоставив параметр объекта события во всех браузерах:

$("<a />")
    .append("demo")
    .click(function (evt) { DemoFunc(evt, value.Id) });
1 голос
/ 30 августа 2013

Если вы структурировали свой код вокруг работы с исходным событием, а не с событием jQuery, вы можете использовать evt.originalEvent для ссылки на собственное событие.

...