Я пытаюсь, чтобы меню отображало скрытое меню между строками. Мне не нужно чистое меню css. Пожалуйста, я понимаю, что это можно сделать с меньшей разметкой, и она пропускает много. Это просто вырезано и вставлено, воссоздано.
Вот html:
<nav>
<div class="navigation_toplevel">
<a href="Index"><h4>Home</h4></a>
</div>
<div class="navigation_toplevel has_sub">
<a href="Index"><h4>Home</h4></a>
</div>
<div class="navigation_bottomlevel">
<ul>
<li>Preferences</li>
<li>Preferences</li>
<li>Preferences</li>
</ul>
</div>
<div class="navigation_toplevel has_sub">
<a href="Index"><h4>Home</h4></a>
</div>
<div class="navigation_bottomlevel">
<ul>
<li>Preferences</li>
<li>Preferences</li>
<li>Preferences</li>
</ul>
</div>
<div class="navigation_toplevel has_sub">
<a href="Index"><h4>Home</h4></a>
</div>
<div class="navigation_bottomlevel">
<ul>
<li>Preferences</li>
<li>Preferences</li>
<li>Preferences</li>
</ul>
</div>
<div class="navigation_toplevel has_sub">
<a href="Index"><h4>Home</h4></a>
</div>
<div class="navigation_bottomlevel">
<ul>
<li>Preferences</li>
<li>Preferences</li>
<li>Preferences</li>
</ul>
</div>
<div class="navigation_toplevel has_sub">
<a href="Index"><h4>Home</h4></a>
</div>
<div class="navigation_bottomlevel">
<ul>
<li>Preferences</li>
<li>Preferences</li>
<li>Preferences</li>
</ul>
</div>
</nav>
Я настроил это так, потому что это меню должно быть полностью текучим (если маленькие ветки могут быть 1,2 или 3 ссылки на строку) и иметь возможность показывать подменю горизонтально под ним, заполняя контейнер nav.
Мой JQuery:
<script>
$(document).ready(function () {
if ($(".navigation_toplevel").hasClass("has_sub")) {
$(this).hover(function () {
$(".navigation_toplevel").nextAll("div:first").toggleClass("show_sub");
});
}
else { }
});
</script>
Что я здесь делаю неправильно?
ну, $(".navigation_toplevel")
возвращает коллекцию. Правильный способ работы с коллекцией при получении элементов по имени класса - $(".navigation_toplevel").each(function(){ do something with a single element })
. Но в вашем случае я думаю, что вам нужен такой код: $(".navigation_toplevel.has_sub").hover(mouseInHandler, mouseOutHandler)