2012-02-11 67 views
1

我创建了工具提示来替换默认浏览器“TITLE”气泡。我已经阅读了很多主题,并且他们都建议我应该在mouseover上暂时删除title,然后再放回。我试图做到这一点,但我没有做到。这里是我的代码,为什么我使用jQuery live的原因是因为我想要的效果适用于动态添加元素后:jQuery:在HOVER上临时删除元素TITLE属性

tooltip : { 
    activate : function(selector){ 
     $(selector).each(function(){ 
      $(selector).live('mouseover',function(e){ 
       tooltip.init(this,true,e); 
      }); 
      $(selector).live('mouseout',function(e){ 
      tooltip.init(this,false,e); 
      }); 
     }); 
    }, 
    init : function(elem,show,e){ 
     var title = $(elem).attr('title'); 
     this.addTip(elem,show,title); 

     ... 
    }, 
    addTip : function(elem,show,title) { 
     var code = '<div class="tooltip-wrapper">'+title+'</div>'; 
     if(show) { 
      $(elem).after(code); 
      setTimeout('$(".tooltip-wrapper").fadeIn("slow")',500); 
     } 
     else { 
      $(".tooltip-wrapper").remove(); 
     } 
    } 
} 

我把这个脚本是这样的:

tooltip.activate(selector); 

另一个问题我有,如果我尝试这tooltip.activate("*");,它会给我HIERARCHY_REQUEST_ERR: DOM Exception 3错误,但它工作,如果我使用input作为选择器。

任何投入将非常感激:-)

+0

您正在尝试将某些内容附加到'document'。请参阅http://stackoverflow.com/questions/1256394/what-exactly-can-cause-an-hierarchy-request-err-dom-exception-3-error – georg 2012-02-11 10:17:40

+0

您在引用“HIERARCHY_REQUEST_ERR:DOM异常3”错误?我会纠正这一点。 – Sthe 2012-02-11 10:27:53

回答

1

我只是指出了几个问题:

  • 使用liveeach失败的live的想法。 each在现有元素上循环,而不是未来元素。
  • 但无论如何,你这样做的方式是错误的。您应该删除each(在activate),因为live已适用于多个元素。所以在你的情况下,如果你有N个元素,你会添加相同的事件监听器N次。
  • *适用于所有的元素,这可能是非常低效的。如何尝试[title](适用于具有title属性的元素)
  • 如果您在悬停时暂时删除标题,则标题无意义(因为它仅在悬停时出现)。如果您正在创建基于标题属性的改进工具提示,请首先阅读标题属性并将其用于工具提示
  • 您应该使用mouseentermouseleave而不是mouseovermouseout。如果具有标题的元素具有子元素,您希望工具提示在鼠标进出子元素时继续显示。
1

这样的事情呢?

addTip : function(elem,show,title) { 
     var code = '<div class="tooltip-wrapper">'+title+'</div>'; 
     if(show) { 

      $(elem).after(code); 
      $(elem).removeAttr('title'); 
      setTimeout('$(".tooltip-wrapper").fadeIn("slow")',500); 
     } 
     else { 
      $(".tooltip-wrapper").remove(); 
      $(elem).attr('title',title); 
     } 
    } 
+0

我已经试过了。它没有工作: - (。 – Sthe 2012-02-11 14:29:59

+0

似乎是不可能的,我们确定elem是正确的选择? – 2012-02-11 16:46:24