2011-04-26 13 views
0

我已經建立了使用jQuery的菜單,顯示一個新的元素,當用戶在元素上懸停鼠標的衰落和消失之時,他們將鼠標移動而去。現在,我已經將元素向上移動,以便覆蓋原始元素,這會導致在新元素放置在頂部時觸發第二個懸停事件的問題。忽略新元素的最好方法是什麼,只有當鼠標移出原始元素的邊界時纔會淡出?jQuery的 - 檢測鼠標了新的元素

下面的代碼:

$('#menuitem').hover(function() { 
    $('#menu').append('<span id="hover_'+$(this).attr('rel')+'" class="hover"></span>'); 
}, function() { 
    $('#hover_'+$(this).attr('rel')).fadeOut(function(){$(this).remove();}); 
}); 

現在,#menu產品與它的一些文字,當鼠標移動到它,一個新的元素(.hover)應該出現在上面,應該淡出錨一旦鼠標離開原始菜單項。

目前發生的情況是,新元素立即出現並淡出,因爲當新項目添加到原始錨點頂部時,會觸發第二個懸停功能。

感謝, Ĵ

+1

這將是有益的,如果你能提供這個代碼的樣本。它可以通過許多不同的方式完成。 – HurnsMobile 2011-04-26 19:08:19

+0

修改爲包含示例代碼。 – JWood 2011-04-26 19:32:09

回答

0

刪除監聽器:

$(element_here).unbind(); // If you used $(element_here).bind(); or .hover(); 
$(element_here).die(); // If you used $(element_here).live(); 

然後將其添加回來一次鼠標已經離開了舊元素。

有更可能比這更好的解決方案,但我們可能需要看到您使用之前,我們可以做任何嘗試更好的代碼的例子。

0

最有效的解決方案,我在這樣的情況下,發現是做結合內嵌在HTML。這可能不是最好的方式,但很多時候(根據我的經驗),它更容易綁定內聯,而不是試圖擔心與undind()競爭。這顯然不是一個完整的例子,但它應該足以讓你開始:

注意:我不確定你在rel attr存儲什麼樣的數據,所以我只是用這個詞代替任何將會。

HTML

<li id="menuitem" onmouseover="fadeOut(rel)">bar</li> 

JS

​​
+0

感謝您的建議,但我遇到的問題是,我不希望它淡出,直到鼠標讓元件的面積。當新的元素放置在頂部時,它現在過早消失。 – JWood 2011-04-26 20:37:03

+0

對於這種混淆,很抱歉,相同的代碼只能用'onmouseout'代替'onmouseover'。 – HurnsMobile 2011-04-27 16:50:13

相關問題