2011-01-26 48 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()应该检查它是否在启动时检查它,如果是,请立即退出。

或者,您可以在定时器处于活动状态时向工具提示添加类,并在淡入淡出完成后将其删除。