현재 두 단계의 메뉴를 작업 중입니다. 여기 내 코드 - 메뉴 구조가 있습니다. 학부모 1에 마우스를 올리면 하단에 동일한 ID의 ul
을 표시하려고합니다. jquery 코드를 만들었지 만 mouseleave
에 문제가 있습니다.jQuery의 2 단계 메뉴
HTML 구조
<section id="top-nav">
<nav>
<ul>
<li data-href="menu-id-1">
<a href="">Parent 1</a>
</li>
<li data-href="menu-id-2">
<a href="">Parent 2</a>
</li>
<li data-href="menu-id-0">
<a href="">Parent 3</a>
</li>
</ul>
</nav>
</section>
<section id="bottom-nav">
<nav>
<ul class="child-ul" id="menu-id-1">
<li>
<a href="#">Parent 1 Children li</a>
</li>
<li>
<a href="#">Parent 1 Children li</a>
</li>
<li>
<a href="#">Parent 1 Children li</a>
</li>
<li>
<a href="#">Parent 1 Children li</a>
</li>
<li>
<a href="#">Parent 1 Children li</a>
</li>
</ul>
<ul class="child-ul" id="menu-id-2">
<li>
<a href="#">Parent 2 Children li</a>
</li>
<li>
<a href="#">Parent 2 Children li</a>
</li>
<li>
<a href="#">Parent 2 Children li</a>
</li>
<li>
<a href="#">Parent 2 Children li</a>
</li>
<li>
<a href="#">Parent 2 Children li</a>
</li>
<li>
<a href="#">Parent 2 Children li</a>
</li>
</ul>
</nav>
</section>
jQuery를 (코드가 엉망이다, 그러나 나는 다른 방법을 시도)
$(function() {
$("#top-nav ul li").mouseover(function (e) {
e.preventDefault();
data = $(this).attr("data-href");
$("#" + data).css("display", "block").addClass('ul-active');
$(this).children().addClass("active");
active = true;
}).mouseleave(function() {
liactive = this;
$(".ul-active").mouseleave(function() {
$("#" + data).css("display", "none").removeClass('ul-active');
$(liactive).children().removeClass("active");
});
$("#bottom-nav").not().mouseleave(function() {
$("#" + data).css("display", "none").removeClass('ul-active');
$(liactive).children().removeClass("active");
});
if ($(liactive).attr("data-href") == 'menu-id-0') {
$(liactive).children().removeClass("active");
}
});
});
나는 이것이 매우 간단 알고 있지만, 내가 올바른 방법을 찾을 수 없습니다 내가 좀 피곤해서 제대로 생각하지 않아.
당신은 이벤트 핸들러 내부에 이벤트 핸들러를 연결하고 있습니다. 항상 문제를 피하고 수정해야합니다. –
내 코드에서이 위치를 가리킬 수 있습니까? –
'$ (". ul-active"). mouseleave' 및'$ ("# top-nav ul li"). mouseleave' 핸들러 내의 다른 핸들러. – Regent