Jquery Tooltip插件,不重复div追加?

时间:2011-01-26 00:47:44

标签: javascript jquery xhtml

好的,我看不到这个。

我正在制作一个可以应用于多个项目的工具提示插件。

当mousedover它们充当工具提示时,我在页面上有多个锚点。我使用变量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 个答案:

答案 0 :(得分:2)

您可以存储触发工具提示的对象,并在添加div之前验证对象是否不同。类似的东西:

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

答案 1 :(得分:1)

您需要某种形式的互斥/标记/信号量来表示您当前处于超时/淡出状态,并且mouseover()事件不应该触发。

您为超时ID创建的计时器变量可用于此目的。将上面的内容创建为变量(最初为false),就像您对c_ttip一样。然后在false回调中将其设置为fadeOut()mouseover()例程应检查timer != false何时启动,如果是{。}则立即退出。

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