我正在尝试删除浏览器生成的标题框,其中包含具有title属性的锚点。我想这样做的原因是它不会干扰我的工具提示jQuery。
截至目前,我正在悬停时移除标题attr,但在将自己从悬停状态移除后,它不会重新分配。怎么样?
答案 0 :(得分:2)
那是因为
var title
位于HandlerIn函数中,未在处理程序中定义。 最简单的解决方案是将de var title放在悬停函数之外,并将其分配给悬停处理程序。
编辑:按照Photon的说明删除变量也是一种解决方案。我强烈建议你使用vars。如果未定义全局变量,您的代码很快就会变得混乱且无法维护。但那只是我的意见。
答案 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);
});