我正在jQuery中创建一个简单的下拉菜单。它工作正常。我遇到了问题。
问题是,我需要保持活动页面下拉菜单扩展在下面的示例中,具有.inpath父级的子菜单需要始终保持扩展。如果您将鼠标悬停在另一个菜单项上,则应显示相关的子页面,并在您将鼠标悬停时返回以显示活动的子页面。任何帮助都很受欢迎:-)!
我的HTML:
<div id="menu">
<ul>
<li><a href="">Hvem</a></li>
<li><a href="">Hvad</a>
<ul>
<li><a href="">Produkter</a></li>
<li><a href="">Leveringer</a></li>
</ul>
</li>
<li class="inpath"><a href="">Hvordan</a>
<ul>
<li><a href="">Reklame</a></li>
<li><a href="">PR</a></li>
<li><a href="">Websites</a></li>
<li><a href="">Illustrationer</a></li>
</ul>
</li>
<li class="last-item"><a href="">Sådan!</a></li>
</ul>
<div class="clear"><!--clearfix--></div>
</div>
我的jQuery:
<script type="text/javascript">
//mouseenter, mouseover, hover
// mouseleave, mouseout,
$(document).ready(function () {
$('#menu ul li ul').hide();
$('#menu li').hover(
function () {
//show its submenu
$('ul', this).slideDown(100);
},
function () {
//hide its submenu
$('ul', this).slideUp(100);
}
);
});
</script>
答案 0 :(得分:1)
尝试从原始.inpath
和hide()
中删除hover()
。您还需要使用>
(直接后代选择器)进行更多特定选择。
$(document).ready(function() {
$('#menu > ul > li:not(.inpath) ul').hide();
$('#menu > ul > li:not(.inpath)').hover(
function() {
$('ul', this).slideDown(100);
$('#menu li.inpath ul').hide();
}, function() {
$('ul', this).slideUp(100);
$('#menu li.inpath ul').show();
});
});