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);
....
}
なぜ!?助けて!!
IEおよびChromeでは、event
はwindow.event
に解決されます。Firefoxにはこのプロパティがなく、代わりにイベントハンドラー関数にイベントを提供します。パラメータ。jQueryは、すべてのブラウザでイベントオブジェクトパラメータを提供することにより、この違いを抽象化します。
$("<a />")
.append("demo")
.click(function (evt) { DemoFunc(evt, value.Id) });
JQueryイベントではなく元のイベントを操作するようにコードを構造化した場合は、evt.originalEvent
を使用してネイティブイベントを参照できます。