web-dev-qa-db-ja.com

イベントはFireFoxで定義されていませんが、ChromeおよびIE

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);
    ....
}

なぜ!?助けて!!

18
podeig

IEおよびChromeでは、eventwindow.eventに解決されます。Firefoxにはこのプロパティがなく、代わりにイベントハンドラー関数にイベントを提供します。パラメータ。jQueryは、すべてのブラウザでイベントオブジェクトパラメータを提供することにより、この違いを抽象化します。

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

JQueryイベントではなく元のイベントを操作するようにコードを構造化した場合は、evt.originalEventを使用してネイティブイベントを参照できます。

1
spsaucier