Показать сообщение отдельно
  #1 (permalink)  
Старый 10.06.2011, 15:26
Новичок на форуме
Отправить личное сообщение для sholkyman Посмотреть профиль Найти все сообщения от sholkyman
 
Регистрация: 10.06.2011
Сообщений: 1

.hide() для всех потомков и их потомков
Друзья,
пытаюсь сделать меню с бесконечной вложенностью и всё бы хорошо,
но понадобилось прикрутить таймер, чтобы меню не закрывалось сразу после покидания мышки пределов UL LI. И тут началось.

Код:
var openedmenu = 0;

function hideUlLi() {
	openedmenu.fadeOut();

}

function menu(){
	var timerId;
	var timerId1;

	$("div#nav ul li").hover(
	function() {
		window.clearTimeout(document.getElementById("timerId").value);
	$(this).find("ul:first").show();
	},
	function() {
        openedmenu = jQuery(this).find("ul:first");
        timerId = window.setTimeout(hideUlLi,500);
        document.getElementById("timerId").value = timerId;

	});
};

$(document).ready(function() {
	menu();
});


Если вывести мышку за пределы открытых в этот момент ul, то по таймеру закрывается всё меню (как и должно быть),
но если снова навести мышь на тот же пункт, то открываются все вложенные пункты, которые были открыты при первом наведении.

Из этого я сделал вывод что необходимо в function hideUlLi() выполнить поиск всех потомков данного il (из которого выпадает следующее меню) и выполнить для каждого найденного ul - .hide();

Помогите дописать функцию function hideUlLi() чтобы она закрывала все подменю.
Ну или предложите другой вариант.
Ответить с цитированием