2011-12-26 25 views
1

我遇到了.hover()的問題。我想暫時禁用它,這是我所做的,但它有一個意想不到的副作用,我想擺脫。jQuery:暫時禁用懸停...意外的副作用

以下是我的小提琴:http://jsfiddle.net/sdPVG/7/

我試圖禁用懸停,而工具提示和下拉菜單打開(topTip和topDrop)。點擊紅色圖標(topIconNew)打開這些div,這會擴大工具提示。不幸的是,工具提示在點擊後會永久擴展。我希望div恢復到正常(較窄)的狀態。我哪裏錯了?

任何和所有的幫助表示讚賞。謝謝!

回答

1

你改變了與動畫的topTip div的大小...需要將其設置回它的原始尺寸。您的「//隱藏下拉菜單和工具提示上點擊之外」功能更改爲:

$(document).click(
    function(){ 
     hoverEnabled = true; 
     $('div.topTip').animate({width:100,marginLeft:0},'fast'); 
     $('div.topTip, div.topDrop').hide(); 
    } 
); 
2

在點擊處理程序中,您忘記重新啓用懸停。

this fiddle

你還需要將原來的寬度存儲在腳本的開始,恢復爲每個工具提示格的值。 JsFiddle更新。

請注意,其他答案通過對值「100px」進行硬編碼來設置舊寬度。這已經在你的CSS中定義,並且重複它是一個糟糕的編程習慣。我的解決方案在開始時讀取值並在需要時重新使用它,因此如果您更改了css,則無需更新您的js。

+0

非常感謝您解決另一個問題我張貼此之後實現的,我有(我正要試圖刪除這個帖子圖它在重新發布之前)。感謝您的修復,我現在已經在必要的地方重新啓用了懸停,並且編輯了我的帖子。但是,正如您所看到的,topIconNew單擊並且工具提示已經擴大後,即使重新啓用懸停,它仍然會變寬。我如何解決這個問題,使其恢復到原始大小? – jstacks 2011-12-26 04:09:38

+0

@jstacks我也修復了這個問題。點擊答案 – 2011-12-26 04:11:10

+0

+1中的鏈接,讓我們直接對硬編碼的寬度值進行設置! – vdbuilder 2011-12-26 05:50:58

2

您需要刪除擴展後設置的寬度。

在你$(document).click,進行以下更改:

$('div.topTip, div.topDrop').hide(); 

$('div.topTip, div.topDrop').hide().css('width', '');