2011-01-26 55 views
2

好吧,我看不到得到這個。Jquery Tooltip插件,不要重複div附加?

我正在製作一個可應用於多個項目的工具提示插件。

當他們充當工具提示時,我在頁面上有多個錨點。我使用變量c_ttip作爲div的標識符,因爲我不想在其上設置ID。

如果在工具提示mouseout激活刪除它的超時之前重新綁定了同一個錨,我希望不要追加工具提示並反覆應用類和css。

腳本開發頁面,http://kalluna.com/_dev-js.do

 
var c_ttip = $('<div>'); 

return this.each(function() { 

$(this).mouseover(function() { 
    c_ttip.appendTo(document.body).hide(); 
    c_ttip.html('inside my tooltip').addClass('c_ttip_box').css({'top' : obj.position().top + 20, 'left' : obj.position().left}).show(); 

}).mouseout(function() { 

     timer = setTimeout(function() { 
     c_ttip.fadeOut(200, function() { c_ttip.remove();}); 

    }, 2000); 

    }); 
}); 

回答

2

您可以存儲觸發工具提示的對象,並在添加div之前驗證該對象是否不同。像這樣:

var c_ttip = $('<div>'); 
var currobject; 
... 
$(this).mouseover(function() { 
if(this == currobject) return; 
currobject = this; 
... 
+0

好屎,你讓這看起來很容易,哇。大聲笑 – kr1zmo 2011-01-26 01:24:57

1

你需要某種形式的互斥/標記/信號,以表明您當前處於暫停/淡入淡出的情況,而且mouseover()事件不應該火。

您爲超時ID創建的計時器變量可用於此目的。將它作爲變量創建(初始爲false),就像您對c_ttip有所瞭解。然後在​​回調中將其設置爲false。例程mouseover()應該檢查它是否在啓動時檢查它,如果是,請立即退出。

或者,您可以在定時器處於活動狀態時向工具提示添加類,並在淡入淡出完成後將其刪除。