问题
I have a menu strip . I planned to :
slideDown()
a submenu ( originallydisplay: none
DIV ) when I mouse over the menu strip- hide the submenu by
slideUp
when mouse out.
Here is the codes:
<div id="main_menu" onmouseover="$('#submenu').stop(true,false).slideDown();" onmouseout="$('#submenu').stop(true,false).slideUp();">Main Menu</div>
<div id="submenu" style="display: none">Some submenu contents here</div>
What I try to achieve is, when I mouseover submenu,the submenu holds and stop the mouse out ( the slideUp()
animation. How can I achieve it ?
Note: given that the main_menu and sub_menu did not overlap.
UPDATE: here is the the jsFiddle
回答1:
An easy way you can do is adding a parent dom, and binding the mouse event to it.
html
<div id="menu">
<div id="main_menu">Main Menu</div>
<div id="submenu" style="display: none">Some submenu contents here</div>
</div>
js
$('#menu').hover(function () {
$('#submenu').stop(true, false).slideDown();
},
function () {
$('#submenu').stop(true, false).slideUp();
});
here is jsfiddle demo. http://jsfiddle.net/vyDVd/
update
If you don't want to adding a parent dom, you can try putting submenu
into main_menu
as a child menu.
I update your jsfiddle demo here http://jsfiddle.net/9KfYr/2/
I add 2 css attributes to #submenu
to keep UI unchange.
position:absolute;
top:30px;
And here, I suggest use .hover() provided by jQuery.
回答2:
Actually, I was able to achive this using pure css:
.header-submenu-item {
display:none;
}
.header-parent-link:hover + .header-submenu-item,
.header-submenu-item:hover {
display:block;
}
<div class="header-parent-link">Item 1</div>
<div class="header-submenu-item"></div><!-- Empty submenu -->
<div class="header-parent-link">Item 2</div>
<div class="header-submenu-item">
<a href="#">Child Item</a>
<a href="#">Child Item</a>
<a href="#">Child Item</a>
</div>
It doesn't include slideDown() effect, but is very simple. I guess, slidedown can be achieved using other css effects.
来源:https://stackoverflow.com/questions/14472253/jquery-slidedown-slideup-and-stop