jquery - Mouseleave隐藏元素?

标签 jquery

我有以下代码

$("#nav-mail").mouseenter(function(){
  $("#dropdown_mail").show(); 
});

$("#dropdown_mail,#nav-mail").mouseleave(function(){
  $("#dropdown_mail").hide(); 
});

我正在尝试用它创建一个下拉菜单,但是当我离开 #nav-mail 区域时,#dropdown_mail 会隐藏,这不起作用,因为我需要能够从 #nav-mail 移动到 #dropdown_mail没有它关闭。

那么我该如何制作它,以便它允许我从#nav-mail横向移动到#dropdown_mail,并且仅当鼠标离开两者时才关闭?

HTML

<div id="navbar">
    <!-- Navigation -->
    <ul>
        <li id="current"><a href="dashboard.php" class="nav-dashboard">Dashboard</a></li>
        <li><a href="client.php" class="nav-client">Client</a></li>
        <li><a href="how-it-works.php" class="nav-system">System</a></li>
        <li id="nav-mail"><a href="service-plans.php" class="nav-mail">Mail</a></li>
    </ul>
    <!-- End Navigation -->
</div>

<div id="dropdown_mail">
     <ul>
        <li><a href="email_templates.php">Email Templates</a></li>
    </ul>
</div>

最佳答案

mouseenter 更改为 mouseover 并在隐藏之前设置超时。如果用户仍在该区域上方,超时将被删除。例如

var MailTimeout;

function hideMailDropdown() {
  $("#dropdown_mail").hide();
  clearTimeout(MailTimeout);
}

$(document).ready(function() {
  $("#nav-mail").mouseover(function(){
    $("#dropdown_mail").show();
    clearTimeout(MailTimeout);
  });

  $("#dropdown_mail,#nav-mail").mouseleave(function(){
    var MailTimeout=setTimeout("hideMailDropdown()",500); /* Wait half a second before hiding */
  });
});

关于jquery - Mouseleave隐藏元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3436171/

相关文章:

javascript - 将我的 html 元素动画化为不同的背景颜色。

javascript - 每次加载页面时显示随机 div 图像

javascript - 放大缩小到多张照片

jquery - 打开 Canvas 外菜单时调整内容大小

javascript - 运行 iframe 中的 javascript 函数?

jquery - 在asp.net mvc中,如何传递整数数组作为参数

jquery - 将jquery mobile中的所有点击事件替换为tap以加快速度

javascript - 在 PHP 中向随机用户显示 html 内容

jquery - 如何让css影响jquery加载的新内容?

jquery - CSS3 渐变 jQuery slider