【发布时间】:2013-02-20 01:01:09
【问题描述】:
我有 2 个导航区域。第二个应该在第一个元素悬停时出现,如果鼠标没有移到它上面,它应该消失。
基本上我有:
HTML
<ul class="main">
<li class="1">item 1</li>
<li class="2">item 2</li>
</ul>
<div class="sub">
<ul class="1">
<li>1 sub item 1</li>
<li>1 sub item 2</li>
</ul>
<ul class="2">
<li>2 sub item 1</li>
<li>2 sub item 2</li>
</ul>
</div>
我希望 ul.1 在我将鼠标悬停在 li.1 上时出现,而 ul.2 在我将鼠标悬停在 li.2 上时出现,并且我希望它们只有在我没有悬停在子 uls 上时才会消失。
我已经完成了部分工作:
JAVASCRIPT
var sections = new Array('1', '2');
$.each(sections, function(i, section) {
$('ul.main li.' + section).hover(
function() {
$('div.sub ul').hide();
$('div.sub ul.' + section).show();
}
);
});
这将显示正确的部分并隐藏其他部分,但我不知道我需要什么,所以当鼠标移离 ul.main li 时,如果没有悬停在 .sub ul 上,它就会消失.
更新: 在这里调侃: http://jsfiddle.net/alluvialplains/XY4mH/
【问题讨论】:
-
为什么不将子菜单嵌套在主菜单中?这会解决你的问题。
-
我没有嵌套,因为子导航需要将后面的内容向下推,但它们也需要比主导航更宽,这意味着绝对定位并且没有内容推送:-(
-
您缺少的关键元素是:#1) 将
mouseleave事件绑定到的包装 div,以及 #2) 您正在使用.hover(),但这更容易实现一个绑定了.hide()事件的包装器div。有关更多详细信息,请参阅下面的答案。
标签: javascript jquery hover mouse