Потомки подменю обхода jQuery DOM
Я создал ответную двухуровневую навигацию с использованием jQuery, и она работает довольно хорошо, за исключением одной вещи - ссылки 2-го уровня (подменю) вызывают открытие следующего подменю, когда они вообще не должны ничего открывать.
<nav>
<h2><a href="#">NAV</a></h2>
<ul id="dropNav">
<li><a href="#">This site</a>
<ul>
<li><a href="#">DD Link 01</a></li>
<li><a href="#">DD Link 02</a></li>
<li><a href="#">DD Link 03</a></li>
</ul>
</li>
<li><a href="#">About us</a>
<ul>
<li><a href="#">DD Link 01</a></li>
<li><a href="#">DD Link 02</a></li>
</ul>
</li>
<li><a href="#">Portfolio</a>
<ul>
<li><a href="#">DD Link 01</a></li>
<li><a href="#">DD Link 02</a></li>
<li><a href="#">DD Link 03</a></li>
<li><a href="#">DD Link 04</a></li>
<li><a href="#">DD Link 05</a></li>
</ul>
</li>
<li><a href="#">Prices</a>
<ul>
<li><a href="#">DD Link 01</a></li>
</ul>
</li>
<li><a href="#">Contact</a></li>
<li><a href="#">Social</a>
<ul>
<li><a href="#">DD Link 01</a></li>
<li><a href="#">DD Link 02</a></li>
<li><a href="#">DD Link 03</a></li>
<li><a href="#">DD Link 04</a></li>
</ul>
</li>
</ul>
</nav>
$ (документ).ready (function () {
$(function() {
var pull = $('nav > h2');
menu = $('nav ul:first');
menuHeight = menu.height();
$(pull).on('click', function(e) {
e.preventDefault();
menu.slideToggle();
});
});
$("#dropNav > li").on("click", function(e) {
e.preventDefault();
$(this).siblings().children().next().slideUp(); // when opening a sub
$(this).find("ul").slideToggle(); // toggle the submenu
});
});
Смотрите мой JSFiddle
Как я могу деактивировать эти ссылки 2-го уровня?
1 ответ
Расширяя ответ phari, он выглядит как проблема позиционирования CSS.
/* set up sub nav hover */
nav ul li a {
padding:10px 25px 10px 25px;
display:block;
/*position:relative;*/ /*commenting out this line seemed to fix it*/
}
Вы также можете взглянуть на jQueryUI, который имеет удобную функцию аккордеона.