jquery .attr() 问题
我为我的链接编写了这个快速工具提示功能:
$(function() {
$('a').hover(function(e) {
var title = $(this).attr('title');
$('<div id="tooltip">' + title + '</div>').css({"top" : e.pageY + 12, "left" : e.pageX + 12}).appendTo('body');
}, function() {
$('#tooltip').remove();
});
$('a').mousemove(function(e){
$('#tooltip').css({"top" : e.pageY + 12, "left" : e.pageX + 12});
})
});
我想删除原始标题,因为同时拥有两个标题是愚蠢的。我知道我应该这样做:
$('a').hover(function() {
$(this).attr('title', '');
});
问题是我无法将其添加回来。我尝试过:
$(this).attr('title', title) //from my title variable
但失败了。建议?
I wrote this quick tooltip function for my links:
$(function() {
$('a').hover(function(e) {
var title = $(this).attr('title');
$('<div id="tooltip">' + title + '</div>').css({"top" : e.pageY + 12, "left" : e.pageX + 12}).appendTo('body');
}, function() {
$('#tooltip').remove();
});
$('a').mousemove(function(e){
$('#tooltip').css({"top" : e.pageY + 12, "left" : e.pageX + 12});
})
});
I want to remove the original title because having both is stupid. I know I should go something like this:
$('a').hover(function() {
$(this).attr('title', '');
});
The problem is that I can't add it back. I tried:
$(this).attr('title', title) //from my title variable
but it failed. Suggestions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
存储在
title
变量中的值是该函数的本地值,并且在函数执行完成后会丢失。一种解决方案是将先前的标题存储在元素的
data()
中。然后在需要时访问它(大概在下一个悬停函数中)。
您可以将变量声明放在两个函数之外。
...但我认为使用
data()
会更安全。The value stored in
title
variable is local to that function, and is lost after the function is done executing anyway.One solution would be to store the previous title in the element's
data()
.Then access it when you need it (presumably in your next function for hover).
You could bring the variable declaration outside of both functions.
...but I think using
data()
would be safer.您的标题变量仅存在于第一个处理程序的范围内。您必须将该值存储在可从第二个处理程序访问的其他位置。
Your title variable only exist in the scope of the first handler. You will have to store the value somewhere else accessible from the second handler.