所以 jQuery 和setTimeOut
正在躲避我!我呼吁 Stack 社区的善良性质寻求帮助。
我正在创建一个定制的下拉导航,并setTimeOut
在脚本中实现了一些问题,因此菜单的响应超时。
我将详细介绍超时。
菜单需要有一个超时时间,mouseenter
这样用户可能会不小心将鼠标悬停在链接上而不会触发下拉菜单;目前设置为 400 毫秒。我还想要一个超时,允许用户mouseleave
下拉并在下拉隐藏之前有 1000 毫秒的时间悬停回下拉。
需要注意的是,将超时设置为阻止下拉菜单在下拉菜单之间无缝切换而不会闪烁。
如果一个下拉菜单可见并且用户将鼠标移动到另一个顶级链接(父级,即“服务”),则下拉菜单(其容器)的视觉效果会显示并且只有下拉菜单中的数据会发生变化。
我希望这涵盖了脚本的要求,如果没有,请让我详细说明。
JSfiddle 链接:http: //jsfiddle.net/ATqqv/8/
对于无法访问 JSfiddle 站点的纯粹主义者或窥视者,这里是我的 JS 代码。
function responsive_navigation() {
var hover, $this;
$target = $("header nav > ul > li");
$target.on('mouseenter click', function (e) {
$this = $(this);
if(hover) {
clearTimeout(hover); // Cancel the timeout to hide the menu
hover = null;
}
hover = setTimeout(nav_show, 400);
}).on('mouseleave', function () {
//clearTimeout(hover);
//hover = setTimeout(nav_hide, 1000);
nav_hide();
});
// Show the menu relative to user actions
function nav_show() {
$this.addClass('active');
$this.children('.dropnav').show();
}
// Hide the menu relative to user actions
function nav_hide() {
$this.children('.dropnav').hide();
$this.removeClass('active');
}
}
$(document).ready(function () {
responsive_navigation();
});
预先感谢您提供任何帮助并为答案做出贡献。