当我滑动完全滑动的菜单项时,我尝试制作一个Jquery下拉菜单,当我离开菜单项时,它完全滑动。
唯一的问题是,当我将鼠标移动到子菜单时,它会向上滑动,我想要的是保持打开状态,直到我离开菜单项或子菜单。
HTML
<ul>
<a href="dashboard.php"><li class="dashboard icon-home">Dashboard</li></a>
<a href="#"><li class="icon-pages">Paginas</li></a>
<a class="trigger" href="#"><li class="afbeeldingen icon-image">Afbeeldingen</li></a>
<div class="adminsubmenu">
<a href="#">Submenu item</a>
<a href="#">Submenu item</a>
<a href="#">Submenu item</a>
</div>
<a href="#"><li class="icon-users">Gebruikers</li></a>
<a href="#"><li class="icon-settings">Instellingen</li></a>
</ul>
CSS
div#adminmenu ul li {
font-size:13px;
font-weight:600;
padding:7px 0 7px 28px;
background-color:#fff;
width:175px;
border-bottom:1px solid #c2c2c2;
border-right:1px solid #c2c2c2;
}
div.adminsubmenu {
height:100px;
width:175px;
background:url(../images/adminmenu_bg.png) repeat-y top right #e6e6e6;
}
Jquery的
$(document).ready(function(){
$(".adminsubmenu").hide();
$("a.trigger").mouseover(function(){
$(".adminsubmenu").slideDown();
}).mouseleave(function(){
$(".adminsubmenu").slideUp();
});
});
这是Fiddle
答案 0 :(得分:3)
你应该将<a>
置于<li>
内,而不是相反,以使HTML有效。
也就是说,只需更改您的JavaScript即可完成您想要的操作:
$("a.trigger").mouseover(function(){
$(".adminsubmenu").slideDown();
});
$('.adminsubmenu').mouseleave(function(){
$(".adminsubmenu").slideUp();
});
更好的是,将子菜单放在触发器元素内。这样,只要你的鼠标在子菜单上,你仍然会在触发器上盘旋:
<li class="afbeeldingen icon-image trigger">
<a class="" href="#">Afbeeldingen</a>
<ul class="adminsubmenu">
<li><a href="#">Submenu item</a></li>
<li><a href="#">Submenu item</a></li>
<li><a href="#">Submenu item</a></li>
</ul>
</li>
新JS:
$(".trigger").mouseover(function () {
$(".adminsubmenu").stop().slideDown();
}).mouseleave(function () {
$(".adminsubmenu").stop().slideUp();
});
答案 1 :(得分:1)
<li><a ... </a></li>
INSTEAD OF
<a><li> </li></a>
实际上是另一种方式
答案 2 :(得分:0)
这正是你所说的。当鼠标离开a.trigger
时,菜单会向上滑动。所以你只需将其更改为$(".adminsubmenu").mouseleave
这是你想要的:
$(document).ready(function(){
$(".adminsubmenu").hide();
$("a.trigger").mouseover(function(){
$(".adminsubmenu").slideDown();
})
$(".adminsubmenu").mouseleave(function(){
$(".adminsubmenu").slideUp();
});
});