我有以下脚本,但当我从#menu
移动光标时,#dropdown
消失了。如何保持.dropdown
开放?
$(document).ready(function() {
$(".menu").hover(function() {
$(".dropdown").show();
}, function() {
$(".dropdown").hide();
});
});
HTML
<ul>
<li><a href="#">Home</a></li>
<li class="menu">
<a href="#">Dropdown</a>
<ul class="dropdown">
<li><a href="#">Sub Page</a></li>
</ul>
</li>
</ul>
答案 0 :(得分:0)
如果不使用JS,您可以完成您尝试做的事情。这是一个纯CSS解决方案:
解决方案1:
HTML:
<ul>
<li><a href="#">Home</a></li>
<li class="menu">
<a href="#">Dropdown</a>
<ul class="dropdown">
<li><a href="#">Sub Page</a></li>
</ul>
</li>
</ul>
CSS:
.dropdown {
display: none;
}
.menu:hover > .dropdown {
display: block;
}
<强> FIDDLE 强>
解决方案2:
HTML:
<ul>
<li><a href="#">Home</a></li>
<li class="menu">
<a href="#">Dropdown</a>
<ul class="dropdown">
<li><a href="#">Sub Page</a></li>
</ul>
</li>
</ul>
CSS:
.dropdown {
display: none;
}
JavaScript的:
$(function () {
var $dropdown = $('.dropdown'),
$menu = $('.menu'),
timeout;
$menu.on('mouseenter', function () {
clearTimeout(timeout);
$dropdown.show();
}).on('mouseleave', function () {
timeout = setTimeout(function () {
$dropdown.hide();
}, 200);
});
$dropdown.on('mouseenter', function () {
clearTimeout(timeout);
$dropdown.show();
}).on('mouseleave', function () {
timeout = setTimeout(function () {
$dropdown.hide();
}, 200);
});
});
<强> FIDDLE 强>
答案 1 :(得分:0)
.hover
获取在另一个(第二个)参数中鼠标离开时运行的代码。如果您想保持菜单打开,请使用.mouseenter
事件处理程序:
$(document).ready(function() {
$(".menu").mouseenter(function() {
$(".dropdown").show();
});
});