在FireFox中未定义事件,但在Chrome和IE中可以。

18

我使用 jQuery 生成 HTML:

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

这段代码在Chrome和IE8中运行完美,但在FireFox中出现错误:“event is not defined”。 我把代码改成了这样:

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

这适用于Firefox,但不适用于Chrome和IE。

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

为什么?!帮帮我!!

2个回答

36

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

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

非常感谢你 Tim!你帮我节省了很多时间!:-) - podeig
换句话说,确保在调用中使用的“evt”或其他内容也出现在“function()”部分中。与https://dev59.com/EmIj5IYBdhLWcg3wMijW中的问题相同。 - Malachi

0
如果你的代码是基于原始事件而不是 jQuery 事件开发的,那么你可以使用 evt.originalEvent 来引用本机事件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接