Сообщение от x-yuri
|
t.parentNode.parentNode.getElementsByTagName('div' )[1]
|
Cпасибо, спорол горячку(я, в смысле).
Сообщение от x-yuri
|
лучше не использовать глобальные переменные (menuDiv)
|
Да, в данном случае можно обойтись без глобальной переменной:
$(document).ready(function() {
var titles = $("div.menu ul li #tab a");
for (var i = 0; i < titles.length; i++) {
var title = titles[i];
title.onmouseover = function(e) {
var submenus = $("div.menu ul li div.fall");
for (var j = 0; j < submenus.length; j++) {
if (submenus[j].style.visibility == "visible")
submenus[j].style.visibility == "hidden";
}
var e = e || window.event;
var t = e.target || e.srcElement;
menuDiv = t.parentNode.parentNode.getElementsByTagName('div')[1];
menuDiv.style.visibility = "visible";
menuDiv.onmouseout = function(e) {
menuDiv.style.visibility = "hidden";
}
};
}
});
но первый вариант лучше по производительности, потому что выделенное подменю я храню в переменной между вызовами функции, вместо того, чтобы каждый раз искать его заново.
Сообщение от x-yuri
|
var el = <получение ссылки на DOM-объект>;
el.on... = function() {
...el...
}
это очень распространенный способ добиться memory leak'ов.
|
Ну, это может случиться в случае большого количества элементов. А у меня всего лишь обычное верхнее меню.
Сообщение от x-yuri
|
нельзя двум и более элементам задавать один и тот же id
|
Знаю, это просто небрежность с моей стороны.