Javascript jQuery:悬停时临时删除元素标题属性

Javascript jQuery:悬停时临时删除元素标题属性,javascript,jquery,tooltip,syntax-error,title,Javascript,Jquery,Tooltip,Syntax Error,Title,我创建了工具提示来替换默认的浏览器“标题”气泡。我已经阅读了很多帖子,它们都建议我应该暂时删除mouseover上的title,以后再打开。我正试着做那件事,但我做不到。这是我的代码,我之所以使用jQuerylive,是因为我想在以后将效果应用于动态添加的元素: tooltip : { activate : function(selector){ $(selector).each(function(){ $(selector).live('mous

我创建了工具提示来替换默认的浏览器“标题”气泡。我已经阅读了很多帖子,它们都建议我应该暂时删除
mouseover
上的
title
,以后再打开。我正试着做那件事,但我做不到。这是我的代码,我之所以使用jQuery
live
,是因为我想在以后将效果应用于动态添加的元素:

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();
        }
    }
}
我遇到的另一个问题是,如果我尝试此
工具提示,它会给我
层次结构\u请求\u错误:DOM异常3
错误
,但如果我使用
input
作为选择器,它会工作


任何意见都将不胜感激:-)

我只想指出几个问题:

  • 内部使用
    live
    ,每个
    都会破坏
    live
    的理念<代码>每个
    在现有元素上循环,而不是在将来的元素上循环
  • 但无论如何,你这样做是错误的。您应该删除
    每个
    (在
    激活
    中),因为
    活动
    已经应用于多个元素。因此,在您的示例中,如果有N个元素,那么将添加N次相同的事件侦听器
  • *
    适用于所有元素,这可能非常低效。试试
    [title]
    (适用于具有
    title
    属性的元素)
  • 如果在悬停时临时删除标题,则标题没有意义(因为它仅在悬停时显示)。如果要基于title属性创建改进的工具提示,请在第一次遇到title属性时读取该属性,并将其用于工具提示
  • 您可能应该使用
    mouseenter
    mouseleave
    而不是
    mouseover
    mouseout
    。如果具有标题的元素具有子元素,则当鼠标进入/移出子元素时,您希望工具提示保持显示

    • 像这样的东西怎么样

      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);
              }
          }
      
      addTip:function(元素、显示、标题){
      var代码=“”+标题+“”;
      如果(显示){
      $(元素)。在(代码)之后;
      $(elem).removeAttr('title');
      setTimeout(“$”(“.tooltip wrapper”).fadeIn(“slow”)”,500);
      }
      否则{
      $(“.tooltip包装”).remove();
      $(elem).attr('title',title);
      }
      }
      
      您正试图向
      文档
      追加内容。请参阅您正在引用的
      层次结构\u请求\u错误:DOM异常3
      错误?我会纠正的。这似乎是不可能的,我们确定elem是正确的选择者吗?
      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);
              }
          }