我有一些旧的代码,我正在更新以在firefox中工作,我遇到了一个问题。
在代码中,有一个如下所示的函数:
function tableEnter() {
myLocation = event.srcElement;
}
这在firefox中不起作用。我对此进行了相当多的研究,但是我发现的大多数解决方案都需要将一个事件传递给该函数,然后对传递的e参数进行操作。 ...不幸的是,在我正在更新的代码中,我没有传递任何参数。
使event.srcElemet在firefox中工作的解决方案是什么,没有任何参数传递给我的函数?
编辑:
好的,问题是:如何将事件对象传递给tableEnter()函数?
这是代码目前正在做的事情:
$(document).ready(function () {
//make table rows
//for every new table row...
myRow.onmouseover = tableEnter; (this is probably a bad name. it should be like..rowEnter. But this is the way I found the code)
});
现在的问题是,我如何将事件对象传递给tableEnter(),以便我可以在互联网上做的事情以及下面的答案。
感谢。
答案 0 :(得分:2)
老实说,我不明白为什么你想要访问事件对象,而不是你的处理程序的参数。但是,嘿,那只是我。虽然没有指定参数,但FF和chrome只是随心所欲,并将事件对象传递给处理程序。所以:
function tableEnter()
{
var evt = window.event || arguments[0];
var src = evt.target || evt.srcElement;
}
就是这样。就个人而言,我建议你做整个网络正在做的事情:
function handler(e)
{
e = e || window.event;
var target = e.target || e.srcElement;
}
由于您使用的是FF,因此不应过多地偏离任何编码约定或标准,无论它们是多么模糊。至少它比没有标准或约定更好。
鉴于您的更新,只需将您的功能定义更改为:
function tableEnter(e)
{
//though in jQuery, I suspect e is allready X-browser-proof
e = e || window.event;
//just leave ^^this^^ line out, and check in IE: alert(typeof e);
//if it alerts object, jQuery passed the event object for you
var theRow = this;//<-- this points to the row that triggered the mouseover
var jQRow = $(this);//gives you access to jQuery methods
var target = e.target || e.srcElement;//<-- mainly of importance in delegation
}