我注意到在Chrome和IE9中,对于onmouseout事件,有一个event.toElement属性(因此您可以确定鼠标现在指向哪个元素)。
我在Firefox中找不到类似的属性。
不幸的是我无法使用jQuery来处理这些事件,我必须使用原生的js。
任何建议都将受到赞赏。
答案 0 :(得分:35)
使用它解决我的问题
event.target
答案 1 :(得分:21)
在Firefox中,event.relatedTarget
https://developer.mozilla.org/en/DOM:event.relatedTarget#1003983
答案 2 :(得分:8)
实际上event.currentTarget
应该适用于Chrome,Firefox和IE
答案 3 :(得分:8)
当我使用Jay的答案时,我遇到了一个问题,event.target
在firefox上指向event.toElement
目标的父元素。
在查看事件obj后,我发现event.originalEvent.target
,它在firefox和chrome上都很好用。
答案 4 :(得分:6)
截至2014年,IE11不支持toElement
,我查看了事件对象,发现target
与toElement具有相同的数据。
也就是说,如果单击触发此事件的元素内的子元素,则子元素将成为“目标”并存储在此属性中。
触发事件的元素存储在currentTarget
属性中。
注意,我只测试过这个版本,因为11版旧版本可能不支持此版本。
所以为了支持firefox ie和chrome(可能还有其他人,需要填充polyfill,如:
var target = e.toElement || e.relatedTarget || e.target || function () { throw "Failed to attach an event target!"; }
其中e
是event
答案 5 :(得分:0)
代码易于理解..
enter code here
if(typeof evt.toElement !== "undefined")
{
evt.toElement.classList.toggle('done');
}
else if(typeof evt.relatedTarget !== "undefined")
{
if(evt.relatedTarget !== null)
{
evt.relatedTarget.classList.toggle('done');
}
else if(typeof evt.currentTarget !== "undefined")
{
evt.currentTarget.classList.toggle('done');
}
else
{
console.log("s_f_li_clickexception...");
} //endif
} //endif