我使用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);
....
}
为什么!?救命!!
答案 0 :(得分:36)
在IE和Chrome中,event
正在解析为window.event
。 Firefox没有此属性,而是通过将事件作为参数传递给事件处理函数。 jQuery通过在所有浏览器中提供事件对象参数来为您抽象出这种差异:
$("<a />")
.append("demo")
.click(function (evt) { DemoFunc(evt, value.Id) });
答案 1 :(得分:1)
如果您使用原始事件而不是jQuery事件构建代码,则可以使用evt.originalEvent
来引用本机事件。