#main-nav li
항목 위로 마우스를 가져 가면 subnav
이 표시되는 상황입니다. 하지만 사용자가 도달 할 수 있도록 지연이 필요합니다 (subnav
). this과 같은 솔루션을 시도했지만 다른 항목에 마우스를 가져 가면 지연이 끝날 때까지 이전에 놓은 항목을 숨기지 않습니다. 그런 다음 handlerOut 내에서 if 문을 추가하여 또는 다른 탐색 항목 또는 mouseOut #main-nav
섹션에서 마우스를 가져 가면 타이머가 실행될 수 있도록 결정합니다 (그러나 handlerOut 내에서 실행되지는 않음).hoverIntent와 timeout의 고유 한 조합
아래 코드와 here it is on jsfiddle입니다.
var $mainlist = $('#main-nav li');
var $subnav = $('#main-nav li ul');
$(function() {
$mainlist.hoverIntent(
function() {
$(this).addClass('active');
},
function() {
if ($('#main-nav li').hover() && $('#main-nav li').not($(this))) {
$(this).removeClass('active');
} else if ($('#main-nav').add($subnav).mouseleave()) {
timer = setTimeout(function() {
$('#main-nav').find('li.active').removeClass('active');
}, 1000);
}
});
$subnav.hover(
function() {
clearTimeout(timer);
},
function() {
//
});
});
는 사이트 스타일 관련으로 sub-nav
가 위치하는 방법을 무시하십시오.
도움을 주시면 감사하겠습니다.
코드와 몇 가지 문제가 있었다
잡아 주셔서 감사합니다! 이것은 완벽한 수정이며 나는 더 조정 된 벌금을 부과했다. 고맙습니다. – Mikel