Вы можете сделать это:
$('#head_navigation li a').hover(function(){
// Hide the visible subnavigations
$('#head_subnavigation ul:visible').css('display','none');
// Show the appropriate subnavigation
$('#head_subnavigation ul#' + $(this).attr('title')).css('display','block');
});
Таким образом, видимые в настоящее время ul #head_subnavigation скрываются, когда вы наводите курсор мыши на новую навигационную панель верхнего уровня li. Вы должны обернуть всю навигацию в div для обработки события mouseout, когда пользователь полностью покидает область меню.
$('#navigationDiv').mouseout(function(){
$('#head_subnavigation ul:visible').css('display','none');
});
Проблема с оберточным div заключается в том, что если меню выходит за пределы div, событие mouseout сработает, скрывая ваше меню. Есть другой подход, который вы могли бы использовать ...
// Globals
var menuHoverTimer = 0;
var menuHoverTimerLimit = 3; // 3 seconds
var menuHoverTimerIntervalID;
function stopHoverTimer(){
clearInterval(menuHoverTimerIntervalID);
}
function resumeHoverTimer(){
// This will run the menuHoverHandler function every 1 second
menuHoverTimerIntervalID = setInterval(menuHoverHandler, 1000);
}
function menuHoverHandler(){
menuHoverTimer++;
if(menuHoverTimer > menuHoverTimerLimit) {
stopHoverTimer();
$('#head_subnavigation ul:visible').css('display','none');
menuHoverTimer = 0;
}
}
Затем в каждом из ваших действий при наведении курсора при наведении курсора мыши запустите stopHoverTimer () и при наведении курсора мыши запустите resumeHoverTimer (); Как я настроил, он будет скрывать меню через 3 секунды, если пользователь не будет наводить курсор на меню. Я думаю, вы можете хотеть, чтобы это было короче.