5

我想我的问题很简单,但我是 javascript 的真正初学者,我找不到我要找的东西:

当鼠标悬停在导航或 ul 上时,我正在尝试获取 li 的 ID ...我的 HTML 结构将是:

<nav><ul id="menu">
<li id="FirstLink">Link1</li>
<li id="SecondLink">Link2</li>
<li id="ThirdLink">Link3</li>
</ul></nav>

所以我的目标是在每个 li 上监听一个 mouseover(和 mouseout)事件,但是一个有 10 个监听器(对于 5 li)的脚本太脏了......

这就是为什么我想到了这样的脚本:

var menu = document.getElementById("menu");
menu.addEventListener('mouseover', myFunction, false);

function myFunction () {
//something that get the ID of the <li> that is currently under the mouse and can put it inside a variable as "Link1"
}

但如果有更好的解决方案,我会很高兴知道的!(我想留在纯js)

4

4 回答 4

2
var menu = document.getElementById("menu");
menu.addEventListener('mouseover', myFunction, false);

function myFunction (event) {
    var li = event.target;
    if( li.nodeName !== 'li' ) return;

    // do your stuff with li
}
于 2013-10-16T11:33:23.623 回答
2

要获取悬停元素的 ID,您需要使用event.target
为此,您需要event在函数中作为参数传递。
然后您可以获得该元素的.id属性。

function myFunction(event) {
    show_result.innerHTML = event.target.id;
}

演示在这里

于 2013-10-16T12:23:55.253 回答
1

仅将事件放在子元素上

var menu = document.getElementById("menu");
for( var counter = 0; counter< menu.childNodes.length; counter++)
{
    menu.childNodes[ counter ].addEventListener('mouseover', function(){
      alert( "id is  " + this.id  ); 
    }, false);
}
于 2013-10-16T11:22:07.180 回答
-1

http://jsfiddle.net/neuroflux/ssSnN/

$('#menu').children("li").on('mouseover', function() {
    var childID = $(this).attr("id");
    //YOUR ID WILL BE childID!
});
于 2013-10-16T11:22:23.457 回答