我想要实现的是,当鼠标悬停在id =“a”的li上时,会出现id =“aa”的相应ul。我有这样的HTML代码:如何简化javascript事件侦听器?
<ul>
<li id="1">Option1</li>
<li id="2">Option2</li>
</ul>
<ul id="11">
<li>Option1.1</li>
<li>Option1.2</li>
</ul>
<ul id="22">
<li>Option2.1</li>
<li>Option2.2</li>
</ul>
和这段JavaScript代码:
for (i=1; i<3; i++) {
var fn = (function(i) {
var li = document.getElementById(i);
var ul = document.getElementById("" + i + i);
li.addEventListener("mouseover", function() {
ul.style.opacity = "1";
}, false);
})(i);
}
和它的作品如预期,但here乔丹格雷说,它有可能摆脱循环的,而是用户为所有列表项目创建一个事件监听器 - 这是我想在此实现的。不幸的是,我不明白他的代码,如果有人能向我解释或提出解决方案,我会很感激。
[不使用数字作为'id's](https://stackoverflow.com/q/7987636/1048572)。 – Bergi
阅读[什么是DOM事件委托?](https://stackoverflow.com/questions/1687296/what-is-dom-event-delegation) – Bergi
@Bergi HTML5规范现在只允许数字ID([旧规格] (https://www.w3.org/TR/html401/types.html#type-name)和[新规格](https://www.w3.org/TR/html5/dom.html#the-id - 属性)) –