Я пытаюсь создать простое меню, в котором элементы меню первого уровня представляют собой элементы li, а второй уровень - блоки ul со своими собственными элементами li. Ничего особо яркого. Css содержит display: none для всех подменю, и моя (оптимистичная) идея состояла в том, чтобы просто показать правильные элементы ul при наведении мыши на записи первого уровня, а затем скрыть их при наведении мыши на SUBmenu (элемент ul). У меня есть некоторые проблемы, чтобы понять, что случилось. В Firefox все хорошо, и последовательность действий: войти в меню первого уровня - войти в подменю - выйти из подменю показывает, что сработала правильная последовательность событий: menuOn subMenuOn subMenuOff menuOff. Я не могу понять, почему в IE в той же последовательности событий subMenuOff запускается внезапно после subMenuOn: в результате подменю немедленно исчезает. Это похоже на то, как пара (subMenuOn subMenuOff) была запущена в одно и то же время, отключив подменю. Без изменений при наведении мыши или вводе мыши. Использование парения не меняет ситуацию. Есть представление о том, что случилось? Это код:
$(document).ready(
function(){
enableMenu();
}
);
var flagOnSubMenu = false;
function enableMenu(){
$('li.menu').bind('mouseenter', menuOn);
$('li.menu').bind('mouseleave', menuOff);
$('ul.sottomenu').bind ('mouseenter', subMenuOn);
$('ul.sottomenu').bind ('mouseleave', subMenuOff);
}
function menuOn(){
scrivi('menuOn');
if (flagOnSubMenu){
scrivi('noAction');
return;
}
var subMenuId;
$('ul.sottomenu').hide();
subMenuId = $(this).find("ul").attr('id');
$('#' + subMenuId ).show();
}
function menuOff(){
scrivi('menuOff<br>');
return;
}
function subMenuOn(){
scrivi('subMenuOn');
flagOnSubMenu = true;
}
function subMenuOff(){
scrivi('subMenuOff');
flagOnSubMenu = false;
$(this).hide();
}
function scrivi(arg){
$('#debug').html( $('#debug').html() + ' ' + arg );
}