Показать сообщение отдельно
  #3 (permalink)  
Старый 12.05.2009, 22:05
Аспирант
Отправить личное сообщение для WalterScott Посмотреть профиль Найти все сообщения от WalterScott
 
Регистрация: 10.05.2009
Сообщений: 57

Сообщение от 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
Знаю, это просто небрежность с моей стороны.

Последний раз редактировалось WalterScott, 13.05.2009 в 10:38.
Ответить с цитированием