事件未在FireFox中定义,但在Chrome和IE中确定

时间:2010-06-04 13:35:11

标签: javascript jquery events click

我使用jQuery生成HTML:

$("<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 个答案:

答案 0 :(得分:36)

在IE和Chrome中,event正在解析为window.event。 Firefox没有此属性,而是通过将事件作为参数传递给事件处理函数。 jQuery通过在所有浏览器中提供事件对象参数来为您抽象出这种差异:

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

答案 1 :(得分:1)

如果您使用原始事件而不是jQuery事件构建代码,则可以使用evt.originalEvent来引用本机事件。