【发布时间】:2015-04-16 08:57:47
【问题描述】:
我目前正在使用 jQuery Hover Intent 插件在触发菜单悬停时添加初始延迟。
HTML:
<div>
<ul>
<li class="link hover"><a href="#">Hover</a></li>
</ul>
</div>
<div class="sub hover">
<h1>Sub Section</h1>
</div>
JS:
// Vars
var timeout;
// Show Menu
function showMenu() {
clearTimeout(timeout);
$('.sub').fadeIn(50);
}
// Hide Menu
function hideMenu() {
timeout = setTimeout(function () {
$('.sub').fadeOut(50);
}, 100);
}
// Settings
var config = {
interval: 50, // time between reading/comparing mouse coordinates
timeout: timeout, // time before out function is called
over: showMenu,
out: hideMenu
};
// Initialise Hover
$('.hover').hoverIntent(config);
在配置中,当间隔设置为 0 时,容器之间的切换工作正常。
当我将间隔设置为大于 0 时,在容器内外悬停时会出现问题(子菜单闪烁并消失)。但是我需要为初始延迟设置间隔。
【问题讨论】:
-
实际上它不会像你想象的那样工作。您为 Menu 和 Sub Menu 'hover' 提供了相同的类并且在 jQuery 中您编写了 $('.hover').hoverIntent(config);此行将在 Menu 和 Submenu 元素上初始化 hoverIntent。因此,当您使用 0 作为间隔时,一切正常,因为 HoverIntent 的 showMenu 和 hideMenu 回调都附在两个元素上。
-
您必须编写自己的代码/逻辑来防止 SubMenu 隐藏。
标签: javascript jquery html hoverintent