2010-05-05 39 views
1
<html lang="en"> 
<head> 
<style> 
#thisdiv {padding:10px; margin:-15px 0 0 40px; background-color:#333; position:absolute; display:none;} 
div.block {margin-top:10px; width:200px;} 
div#thisdiv a {color:#fff;} 
</style> 
</head> 
<body> 

<div id ="one" class="block"><a href="">one</a></div> 
<div id="thisdiv">hello</div> 
<div id ="two"class="block">two</div> 
<div id ="three"class="block">three/div> 


<script src="http://code.jquery.com/jquery-latest.js"></script> 
<script> 
$(document).ready(function() { 
    $('#one').hover(function() { 
    $('#thisdiv').fadeIn(400); 
    }); 

    $('div:not(#thisdiv)').mouseleave(function() { 
    $('#thisdiv').fadeOut(400) 
    }); 
}); 
</script> 
</body> 
</html> 

#thisdiv不fadeOut。我可以使用下面的內容,但是隻有#thisdiv的光標滑出時纔會淡出。有什麼辦法可以解決這個問題,所以當光標離開時,div仍然淡出。jquery:not()選擇器

$('#thisdiv').mouseleave(function() { 
    $('#thisdiv').fadeOut(400) 
    }); 

我搞不​​明白爲什麼jquery的:不是選擇器沒有做我想做的事。 我錯用了嗎?

回答

2

1 - 你需要使用mouseover,不hover第一個結合:

$('#one').mouseover(function() { 
    $('#thisdiv').fadeIn(400); 
    }); 

hover接受兩個函數的參數(鼠標懸停/鼠標移出)。

2 - 在您的標記結束你結束的div標籤損壞(缺少<):

<div id ="three"class="block">three/div> <-- here 

我測試在作出上述修改你的代碼,它似乎工作,只要你想它(如果我理解正確的話)。測試它here

+0

抱歉破碎的標記,我不得不刪除掉A HREF標籤,因爲計算器不會讓我有超過1在帖子中的href。 您的鏈接示例工作正常,但我想我沒有說清楚。當我必須將光標移動到div並將鼠標移出時,#thisdiv纔會消失。 當我將鼠標放在#one上時,出現#thisdiv,但是當我移動到#two時,#thisdiv仍然停留在那裏。這是問題,同時#thisdiv是一個div,它有一個鏈接供用戶點擊。 我只能通過使用:不是選擇器,所以當我把鼠標移到除#thisdiv之外的任何地方,#thisdiv都會消失。 – crayfish 2010-05-05 15:34:45

0

如果您要明確設置時間,您需要將其作爲散列參數傳遞。否則,你可以用「慢」,「快」或默認是400

$('#my_button').mouseleave(function(){ $(this).fadeOut({duration:1000}) })