我正在尝试删除浏览器生成的标题框,该标题框与具有标题属性的锚点一起出现。我想这样做的原因是它不会干扰我的工具提示 jQuery。
截至目前,我正在删除悬停时的标题属性,但在将自己从悬停状态中删除后,它不会重新分配它。怎么来的?
我正在尝试删除浏览器生成的标题框,该标题框与具有标题属性的锚点一起出现。我想这样做的原因是它不会干扰我的工具提示 jQuery。
截至目前,我正在删除悬停时的标题属性,但在将自己从悬停状态中删除后,它不会重新分配它。怎么来的?
那是因为
var title
是在 HandlerIn 函数中,而不是在处理程序 out 中定义。最简单的解决方案是将 de var title 放在悬停函数之外,并将其分配到悬停处理程序中。
编辑:删除 Photon 所述的变量也是一种解决方案。我强烈建议您使用 vars。如果未定义全局变量,您的代码很快就会变得混乱且无法维护。但那只是我的个人意见。
那是因为您的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);
});
你在那里声明var title = $(this).attr('title');
你的第一个函数,但你的第二个函数不知道title
.
它不会重新分配 title 值的原因是因为您在第一个函数中声明了 title 变量,这超出了第二个函数的范围。如果要保留原始标题值,则需要以第二个函数可以访问它的方式执行此操作。
相反,请尝试将其添加到数据值:
$(this).data("originalTitle", $(this).attr("title"));
然后在你的第二个函数中重新分配它:
$(this).attr("title", $(this).data("originalTitle"));
我会避免在页面上title
设置和获取n 个链接的通用变量。将值存储为元素本身的数据对我来说似乎是一种更好的方法。
just remove all var declarations before variable name
it will become global variable 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);
});