2012-03-26 119 views
0

我使用所謂tipTip一個jQuery插件(http://code.drewwilson.com/entry/tiptip-jquery-plugin)。我將此用於電子商務網站,當用戶將鼠標懸停在產品圖像上時,會出現一個信息框,其中包含有關該產品的額外詳細信息。延遲一個jQuery淡出

tipTip的默認行爲是,一旦用戶將其鼠標從鏈接懸停框消失。您還可以設置keepAlive:true以要求用戶將鼠標移動到懸停框上以使框消失。這兩種情況都不適合我。我在懸停框中有鏈接,因此用戶需要能夠在不消失的情況下輸入框。但是我也不希望用戶被要求輸入框以使其消失。關閉鏈接和框應使其消失。

爲了解決這個問題,我一直試圖把一個jQuery延遲()到tipTip的JavaScript。我也嘗試過使用setTimeout。但我一直在發現,我所能發生的一切就是懸停框一直保留,直到用戶移動到另一個鏈接上。儘管我希望delay()意味着它在我指定的毫秒數之後消失,而不管用戶是否已經移動到另一個鏈接。

你可以看到完整的tipTip JS代碼在這裏:http://code.google.com/p/geoapps/source/browse/trunk/capstones/talha_khopekar_2012/jquery.tipTip.js?spec=svn108&r=108

我一直在試圖通過修改的最後幾行來實現的延遲。我嘗試添加的延遲如下:

function deactive_tiptip(){ 
            opts.exit.call(this); 
            if (timeout){ clearTimeout(timeout); } 
            tiptip_holder.delay(1000).fadeOut(opts.fadeOut); 
          } 

但正如我所說,這樣做的效果是,懸停框保持在原位,直至用戶移動到另一條鏈路,並激活新的懸停框。我真的不明白這是爲什麼。我的理解是,延遲功能應該簡單地延遲1秒,然後fadeOut應該照常進行。

回答

1

當我試圖延遲另一個函數的調用時,我對這個js函數有一些好運。

window.setTimeout(function(){callFunction(params);}, 4000); 

讓我知道這是否有幫助。我有一袋js的技巧。

問候,

+0

我試過,但它有,當我試圖延遲同樣的效果 - 這意味着懸停盒依然是直到我移動到另一個鏈接 – Andrew 2012-03-26 23:26:27

1

讓您真正想要做的是包括在熱點區域的工具提示和僅停用當/如果用戶離開了初始項目和工具提示。

尋找到「鼠標移出」事件調用deactivate_tiptip()函數存在,並添加「添加」功能的工具提示類。我不知道架構,但它可能看起來像這樣:

tiptip.mouseOut(function() { deactivate_tiptip(); }; // Original 
tiptip.add(".TOOLTIP").mouseOut(function() { deactivate_tiptip(); }; // Ammended 

// OR: 

tiptip.on("mouseOut", function() { deactivate_tiptip(); }; // Original 
tiptip.add(".TOOLTIP").on("mouseOut", function() { deactivate_tiptip(); }; // Ammended 

您必須將'.TOOLTIP'更改爲正確的類。只有當你離開時,這應該會觸發停用功能。

+0

嗨 - 感謝您的回覆。沒有鼠標事件。其中停用叫位是在這裏:org_elem.hover(函數(){ active_tiptip();} ,函數(){ 如果(opts.keepAlive){ deactive_tiptip();} !}); 所以我不知道如何使用你建議的方法 – Andrew 2012-03-26 23:25:30

+0

嗨Andrew,'.hover()'是一個jQuery函數。嘗試在org_elem之後插入'.add(「。TOOLTIP」)' – 2012-03-27 03:02:34