我想要實現的是,當鼠標懸停在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 - 屬性)) –