2013-10-16 27 views
3

我一直在試圖從的mouseenter事件而得到目標(<li>元素),但到目前爲止沒有運氣!如何獲得活動對象不jQuery的

代碼:

<ul id="ul"> 
    <li>1</li> 
    <li>2</li> 
    <li>3</li> 
    <li>4</li> 
    <li>5</li> 
</ul> 

<script> 
    var ul = document.getElementById('ul'); 

    ul.onmouseenter = function(e) { 
     console.log(e.target); 
    }; 
</script> 

不幸的是,控制檯保持打印​​元素。有什麼建議麼?

回答

5

這是因爲onmouseenter事件不是「冒泡」事件,因此只有當您輸入UL元素時纔會觸發,而不是在輸入嵌套元素時觸發,例如LI元素。

因此,e.targetthis元素都將是UL

如果您使用onmouseover代替它會冒泡,因此您在輸入LI元素時將得到LI作爲e.target

+0

是啊,這是我的直覺就認爲我會問反正:) – smaili

2

你可以得到有針對性的立像:

function getEventTarget(e) { 
    e = e || window.event; 
    return e.target || e.srcElement; 
} 

var ul = document.getElementById('ul'); 
ul.onclick= function(event) { 
    var target = getEventTarget(event); 
    console.log(target.innerHTML); 
}; 
+0

對於工作示例按照鏈接。 [Js小提琴](http://jsfiddle.net/vikashh/WTM27/) –

+0

@VikashPathak謝謝你的示例代碼,但我實際上特別要求mouseenter事件;) – smaili

+0

@ smaili-也許,但如果你忽略IE事件模型和'event.srcElement'你的代碼在使用的一些瀏覽器中會失敗。 – RobG