2013-03-01 228 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/