大家好我尝试使用jQuery制作我自己的工具提示脚本。一切都很好但是当我在链接上盘旋并等待几秒钟浏览器使用标题为自己的工具提示。我怎么能阻止这个?!
我在没有删除标题标签的情况下寻找解决方案。
我的代码:
<html>
<head>
<title>Tooltip</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("a").mousemove("mouseover", function(e) {
var x = e.clientX;
var y = e.clientY-30;
var text = $(this).attr("title");
var i = 0;
for(i=0;i<1;i++) {
if(i=0) {
$("body").append('<div class="tooltip" style="margin-top:'+y+'px; margin-left: '+x+'px;">'+text+'</div>');
} else {
$("div.tooltip").remove();
$("body").append('<div class="tooltip" style="margin-top:'+y+'px; margin-left: '+x+'px;">'+text+'</div>');
}
}
});
$("a").mouseout(function() {
$("div.tooltip").remove();
});
});
</script>
<style>
body {
top: 0px;
left: 0px;
margin: 0;
padding: 0;
}
a {
text-decoration: none;
}
div.tooltip {
background-color: #123534;
position: fixed;
z-index: 2;
padding: 5px;
heigth: 30px;
}
div.menu {
background-color: #666666;
margin-left: 100px;
margin-top: 100px;
position: fixed;
width: auto;
z-index: 1;
}
ul {
margin: 0;
padding: 5px;
list-style-type: none;
}
li {
display: inline;
}
</style>
</head>
<body>
<div class="menu">
<ul>
<li>
<a href="#" title="test" >Link</a>
</li>
<li>
<a href="#" title="asd" >Link</a>
</li>
<li>
<a href="#" title="123" >Link</a>
</li>
</ul>
</div>
</body>
</html>
如果有人知道如何优化我的剧本,我将非常感激;]
答案 0 :(得分:3)
这很简单。您只需将工具提示数据放在另一个属性中即可。我使用html5规范并执行“data-tooltip”。
<强> HTML:强>
<a href="#" data-tooltip="my link tooltip content">My Link</a>
JS:
var text = $(this).data("tooltip");
- 或 -
如果由于某种原因你无法编辑标记,你可以以编程方式进行编辑。您必须在mouseover之前将鼠标悬停在此之前。如:
$(document).ready(function() {
$("a").each(function() {
var $this = $(this);
$this
.data("tooltip", $this.attr("title"))
.removeAttr("title");
});
});
然后,在你的鼠标移动中,正如我上面提到的,你可以用它来拉动它:
var text = $(this).data("tooltip");
答案 1 :(得分:2)
在mouseover
事件中,您可以.attr('title', '')
删除标题..
然后在mouseout
事件中,您可以.attr('title', text)
,因为您之前保存了标题。
答案 2 :(得分:1)
$("a.the_link").hover(
function () {
$(this).data('title', $(this).attr('title'));
$(this).removeAttr('title');
},
function () {
$(this).attr('title', $(this).data('title'));
});
这是我见过的一个想法,我没有想到这个,因为我不需要它,但是当我看到它时,我开始使用它。它会在悬停时删除链接,但在鼠标离开链接后返回它。很好地工作。