Если вы используете visibility: hidden
вместо display: none
, страница зарезервирует визуальное пространство, которое должен занимать элемент, что, как правило, не то, что требуется для вложенного меню
Если visibility
- это то, что вы хотите, игнорируйте меня. Иначе, вот альтернатива, которая использует display
(которая выделяет каждый выбранный элемент в иерархии, который, казалось, был тем, о чем спрашивал ваш вопрос):
Style
li.hover { background: #eee; }
li.hover ul { background: #fff; }
ul ul { display: none; }
HTML
<ul>
<li><a href="#">Item 1</a></li>
<li>
Item 2
<ul>
<li><a href="#">Item 2.a</a></li>
<li>
Item 2.b
<ul>
<li><a href="#">Item 2.b.1</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#">Item 3</a></li>
</ul>
JQuery
$(function() {
$("ul li").hover(
function () {
$(this).addClass("hover").children("ul").show();
},
function () {
$(this).removeClass("hover").children("ul").hide();
}
);
});