[Обновленный ответ]
То, что вы хотите сделать, будет немного сложным с эффектом наведения. Вот возможное решение, но вы не можете использовать hoverIntent
с ним, потому что для этого нужны события, чтобы всплыть, а события mouseenter
и mouseleave
не всплывают. Тем не менее, я включил эффект, похожий на hoverIntent в этом решении. Сначала оберните оба элемента в один элемент с идентификатором menu
:
<div id="menu">
<div id="helper_bar"> ... </div>
<div class="page_width"> ... </div>
</div>
И используйте этот JS (внутри события document.ready):
var trigger = $("img.menu_img")[0], // The DOM element
$nav = $("ul.page_nav"); // The jQuery Wrapped DOM element
$("#menu").mouseover(function(e){
// Keep track when the mouse is over the menu area
if(e.target == this){
$(this).data('over', true);
}
// Only show menu if the img.menu_img was what triggered the event
if(e.target == trigger){
$nav.stop().slideDown('slow');
}
}).mouseout(function(e){
if( e.target == this ){
var $this = $(this);
$this.data('over', false);
window.setTimeout(function(){
if(!$this.data('over')) $nav.stop().slideUp('slow');
}, 500); // Wait half a second to see if the mouse reenters the element
}
});
Пожалуйста, спросите, если у вас есть вопросы или проблемы с этим решением.
[Оригинальный ответ]
hover
никогда не будет работать для того, что вы хотите, поскольку список ul
никогда не может быть дочерним по отношению к img
. Каждый раз, когда вы выходите из img
, меню будет скрываться. Я бы порекомендовал, что-то вроде этого (На самом деле, я бы порекомендовал вам использовать замену изображения вместо изображения, но давайте делать только одну вещь за один раз):
HTML
<ul id="nav">
<li><img class="menu_img" alt="Home" />
<ul class="page_nav">
...
</ul>
</li>
....
</ul>
JS
$("#nav > li").hoverIntent( function(){
$('ul.page_nav', this).stop().slideDown('slow');
}, function(){
$('ul.page_nav', this).slideUp('slow');
});
Таким образом, событие mouseenter
(или его отложенная версия с hoverIntent) срабатывает при наведении li
и не запускается снова до тех пор, пока мышь не завершит весь список. Таким образом, пока мышь находится над li
или любым из его дочерних элементов, событие mouseout
никогда не сработает, что позволит page_nav
выполнять свою работу в качестве меню.