jQuery:删除浏览器生成的标题属性

时间:2012-06-05 04:39:18

标签: javascript jquery

我正在尝试删除浏览器生成的标题框,其中包含具有title属性的锚点。我想这样做的原因是它不会干扰我的工具提示jQuery。

截至目前,我正在悬停时移除标题attr,但在将自己从悬停状态移除后,它不会重新分配。怎么样?

http://jsfiddle.net/fj4xz/5/

5 个答案:

答案 0 :(得分:2)

那是因为

var title

位于HandlerIn函数中,未在处理程序中定义。 最简单的解决方案是将de var title放在悬停函数之外,并将其分配给悬停处理程序。

编辑:按照Photon的说明删除变量也是一种解决方案。我强烈建议你使用vars。如果未定义全局变量,您的代码很快就会变得混乱且无法维护。但那只是我的意见。

http://jsfiddle.net/RubenJonker/fj4xz/6/

答案 1 :(得分:1)

这是因为您的title变量位于mouseenter函数中,但您在mouseleave内使用它。您应该将title变量移出hover方法。

var title;
$('a.tooltip').hover(function() {
    title = $(this).attr('title');
    var offset = $(this).offset();
    var width = $(this).outerWidth();
    var height = $(this).outerHeight();
    $content = $('<div class="tooltip">' + title + '</div>').fadeIn('fast');
    $(this).append($content);
    $(this).attr('title', '');
    $content.offset({
        top: offset.top + height,
        left: offset.left + (width - $content.outerWidth()) / 2
    });
}, function() {
    $(this).find('div').fadeOut('fast');
    $(this).attr('title', title);
});​

答案 2 :(得分:1)

您在第一个函数中声明var title = $(this).attr('title');,但您的第二个函数不知道title

答案 3 :(得分:1)

它不会重新分配标题值的原因是因为你在第一个函数中声明了title变量,这超出了第二个函数的范围。如果要保留原始标题值,则需要以第二个函数可以访问它的方式执行此操作。

相反,请尝试将其添加到数据值:

$(this).data("originalTitle", $(this).attr("title"));

然后在第二个功能中重新分配:

$(this).attr("title", $(this).data("originalTitle"));

我会避免在您设置和获取页面上的 n 链接时浮动一个通用的title变量。将值作为数据存储在元素本身对我来说似乎是一个更好的方法。

答案 4 :(得分:0)

删除变量名前的所有 var 声明

它将成为全局变量See this

  $('a.tooltip').hover(function() {
        title = $(this).attr('title');
         offset = $(this).offset();
         width = $(this).outerWidth();
         height = $(this).outerHeight();
        $content = $('<div class="tooltip">' + title + '</div>').fadeIn('fast');
        $(this).append($content);
        $(this).attr('title', '');
        $content.offset({ top: offset.top+height, left: offset.left+(width-$content.outerWidth())/2 });
    }, function() {
        $(this).find('div').fadeOut('fast');
        $(this).attr('title', title);
    });​