2013-03-01 229 views
1

好吧,下面的代码工作正常,如果我在#nav div外单击。我问是否可以将鼠标从#nav div移开以使其消失。我不想'点击'来隐藏div。 ExampleJquery鼠标事件替代

$(document).mouseup(function (e) 
    { 
     var container = $("#nav"); 

     if (container.has(e.target).length === 0) 
     { 
      container.hide(); 
     } 
    }); 

我试过了mouseenter和mouseleav,但它们不起作用。 Example 任何帮助将不胜感激:)

+0

您需要将事件处理程序绑定到所涉及的元素,而不是'$(文件)'。 – Pointy 2013-03-01 14:45:34

+0

也尝试'mouseover'和'mouseout' – 2013-03-01 14:45:43

+0

mouseenter和mouseleave看起来像它对我工作。问题是什么? – howderek 2013-03-01 14:47:26

回答

4

试试这个:

$(document).ready(function(){ 
    $("#logo").mouseover(function() { $("#nav").fadeIn("slow"); }); 

    $("#nav").mouseleave(function (e){ 
     $(this).fadeOut("slow"); 
    }); 
}); 
1

你需要在导航我将它给你检查以下

$(document).ready(function(){ 
$("#logo").mouseenter(function() { $("#nav").fadeIn("slow"); }); 
}); 

$("#nav").mouseleave(function (e) 
{ 
     $("#nav").fadeOut('fast'); 
}); 

http://jsfiddle.net/sKpwV/6/

的链接鼠标离开

如果你想做一个下拉菜单我建议你看看这里的链接:http://csswizardry.com/2011/02/creating-a-pure-css-dropdown-menu/它做了一个下拉菜单w ith纯CSS,所以它也可以在用户没有启用Javascript的情况下工作。

1

您的nav div与logo div之间的差值导致问题。当用户将鼠标指向这些区域之间,并且您已经严格在nav div上设置了mouseout事件时,它会导致窗口关闭。解决方法是添加一个小超时,以允许用户在关闭菜单之前浏览菜单。这将避免用户意外地将鼠标移动到导航边缘的其他情况,并且可能是div以外的像素或两个像素。

这里是我用来解决这个问题的jQuery:

$('#nav').mouseover(function() { 
    clearTimeout($.data(this, 'mouseOutTimer')); 
}); 
$('#nav').mouseout(function() { 
    clearTimeout($.data(this, 'mouseOutTimer')); 
    $.data(this, 'mouseOutTimer', setTimeout(function() { 
     $("#nav").hide(); 
    }, 700)); 
}); 

http://jsfiddle.net/HyUEu/