У меня есть меню, которое выглядит как показано ниже. Я хочу, чтобы дети первого уровня появлялись при наведении или при щелчке (так что это работает и на iPad). При зависании (или щелчке) дочернего уровня на первом уровне я хочу, чтобы его дети второго уровня появлялись, если они существуют. При наведении указателя мыши или при нажатии на другой элемент DOM все подменю должны быть снова скрыты.JQuery выпадающее меню при наведении или при нажатии
Также, когда пользователь находится на странице, я хочу, чтобы меню складывалось до тех пор, пока он не надвинется или не нажмет на другой пункт меню, чтобы он всегда мог видеть, где он находится в навигации.
Я создаю это в Wordpress для друга, который должен иметь возможность создавать и изменять свое навигационное меню с помощью бэкэнда. Поэтому добавление определенных классов или идентификаторов к некоторым элементам не является вариантом.
<style>
.sub-menu {display: none;}
</style>
<ul class="menu">
<li>child 1
<ul class="sub-menu">
<li>child 1.1
<ul class="sub-menu">
<li>child 1.1.1</li>
<li>child 1.1.2</li>
</ul>
</li>
<li>child 1.2
<ul class="sub-menu">
<li>child 1.2.1</li>
<li>child 1.2.2</li>
</ul>
</li>
</ul>
</li>
<li>child 2
<ul class="sub-menu">
<li>child 2.1</li>
<li>child 2.2</li>
</ul>
</li>
</ul>
Это то, что я придумал, но оно не работает. При наведении курсора на ребенка 1.1 показаны как братья, так и члены 1.1 и 1.2.
$("ul.menu li").hover(function() {
$(this).find("ul.sub-menu").not("ul.sub-menu li ul.sub-menu").slideDown();
} , function() {
$(this).find("ul.sub-menu").hide();
});
$("ul.menu li ul.sub-menu").hover(function() {
$(this).find("ul.sub-menu").slideDown();
} , function() {
$(this).find("ul.sub-menu").hide();
});
просто комментарий, Ipad будет сделайте действие зависания в действие щелчка, если ваш основной вариант в вашем меню dosen't перенаправляет где угодно wil l отобразите свое меню, поэтому, если ваше меню будет работать таким образом, не мешайте делать оба действия (наведите указатель мыши и нажмите). – Paradise