IE8和Firefox中的event.toElement?

时间:2011-12-22 06:29:14

标签: javascript dom javascript-events cross-browser

我注意到在Chrome和IE9中,对于onmouseout事件,有一个event.toElement属性(因此您可以确定鼠标现在指向哪个元素)。

我在Firefox中找不到类似的属性。

不幸的是我无法使用jQuery来处理这些事件,我必须使用原生的js。

任何建议都将受到赞赏。

6 个答案:

答案 0 :(得分:35)

使用它解决我的问题

event.target

答案 1 :(得分:21)

答案 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!"; }

其中eevent

答案 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