JQuery实现超链接鼠标提示效果的方法


Posted in Javascript onJune 10, 2015

本文实例讲述了JQuery实现超链接鼠标提示效果的方法。分享给大家供大家参考。具体分析如下:

浏览器其实已经自带了超链接提示,只需在超链接中加入title属性就可以了。但是这个提示效果的响应速度是非常缓慢的,大概要延迟1秒左右啊。我们现在需要的是当鼠标移动到超链接的那一瞬间就出现提示。这时就需要移除a标签中的title提示效果,自己动手做一个类似功能的提示。

HTML设计如下:

<p><a href="https://3water.com/" class="tooltip" title="欢迎访问三水点靠木">欢迎访问三水点靠木</a></p>

然后为class为tooltip的超链接添加mouseover和mouseout事件:

$("a.tooltip").mouseover(function (){  
    //显示 title  
}).mouseout(function (){  
    //隐藏 title  
});

实现这个效果的具体思路如下:

1. 当鼠标滑入超链接时, 创建一个div元素,div元素的内容为title属性的值。然后将创建的元素追加到文档中。为它设置x坐标和y坐标,使它显示在鼠标位置的旁边。
2. 当鼠标滑出超链接时,移除div元素。

根据分析的思路,写出如下JQuery代码:

$(function(){  
  var x = 10;   
  var y = 20;  
  $("a.tooltip").mouseover(function(e){  
    this.myTitle = this.title;  
    this.title = "";    
    var tooltip = "<div id='tooltip'>"+ this.myTitle +"<\/div>";
    //创建 div 元素  
    $("body").append(tooltip); //把它追加到文档中  
    $("#tooltip")  
      .css({  
        "top": (e.pageY + y) + "px",  
        "left": (e.pageX + x) + "px" 
      }).show("fast"); //设置x坐标和y坐标,并且显示  
  }).mouseout(function(){    
    this.title = this.myTitle;  
    $("#tooltip").remove(); //移除  
  });  
});

此时的效果有两个问题:首先是当鼠标滑过后,a标签中的title属性的提示也会出现:其次是设置x坐标和y坐标的问题,由于自制的提示与鼠标的距离太近,有时候会引起无法提示的问题(鼠标焦点变化引起mouseout事件)。

为了移除a标签中的title提示功能,需要进行以下几个步骤:

1. 当鼠标滑入时,给对象添加一个新属性,并把title的值传给这个属性,然后清空属性title的值。

this.myTitle = this.title;  
s.title = "";   
var tooltip = "<div id='tooltip'>"+ this.myTitle +"<\/div>";
//创建 div 元素

2. 当鼠标滑出时,再把对象的myTitle属性的值又赋给属性title。

this.title = this.myTitle;

为什么当鼠标滑出时,要把属性值又赋给属性title呢?因为当鼠标滑出时,需要考虑再次滑入时的属性title值,如果不将myTitle的值重新赋给title属性,当再次滑入时,title的值就为空了。

为了解决第2个问题,需要重新设置提示元素的top和left的值,代码如下所示,为top增加了10px,为left增加了20px:

var x = lO;  
var y = 20;  
$("#tooltip").css({  
    "top": (e.pageY+y) + "px",  
    "left": (e.pageX+x) + "px" 
});

OK,到这里问题都解决了,鼠标超链接提示效果实现。

希望本文所述对大家的jQuery程序设计有所帮助。

Javascript 相关文章推荐
在chrome浏览器中,防止input[text]和textarea在聚焦时出现黄色边框的解决方法
May 24 Javascript
设置iframe的document.designMode后仅Firefox中其body.innerHTML为br
Feb 27 Javascript
js实现局部页面打印预览原理及示例代码
Jul 03 Javascript
VS2008中使用JavaScript调用WebServices
Dec 18 Javascript
原生JS实现美图瀑布流布局赏析
Sep 07 Javascript
跟我学习javascript的arguments对象
Nov 16 Javascript
jquery中用jsonp实现搜索框功能
Oct 18 Javascript
AngularJS学习笔记(三)数据双向绑定的简单实例
Nov 08 Javascript
JavaScript数据结构之广义表的定义与表示方法详解
Apr 12 Javascript
vue组件父与子通信详解(一)
Nov 07 Javascript
使用Vue自定义指令实现Select组件
May 24 Javascript
js制作提示框插件
Dec 24 Javascript
jquery序列化方法实例分析
Jun 10 #Javascript
jQuery实现dialog设置focus焦点的方法
Jun 10 #Javascript
jQuery替换textarea中换行的方法
Jun 10 #Javascript
简介JavaScript中getUTCMonth()方法的使用
Jun 10 #Javascript
JavaScript中getUTCMinutes()方法的使用详解
Jun 10 #Javascript
在JS中操作时间之getUTCMilliseconds()方法的使用
Jun 10 #Javascript
jQuery获取页面元素绝对与相对位置的方法
Jun 10 #Javascript
You might like
实现分十页分向前十页向后十页的处理
2006/10/09 PHP
php抽奖小程序的实现代码
2013/06/18 PHP
php时区转换转换函数
2014/01/07 PHP
PHP网络操作函数汇总
2015/05/18 PHP
WordPress迁移时一些常见问题的解决方法整理
2015/11/24 PHP
Smarty环境配置与使用入门教程
2016/05/11 PHP
CI框架支持$_GET的两种实现方法
2016/05/18 PHP
laravel5.4生成验证码的实例讲解
2017/08/05 PHP
PHP实现文件上传操作和封装
2020/03/04 PHP
zShowBox 图片放大展示jquery版 兼容性
2011/09/24 Javascript
Jquery实现显示和隐藏的4种简单方式
2013/08/28 Javascript
javascript字母大小写转换的4个函数详解
2014/05/09 Javascript
jQuery实现简单网页遮罩层/弹出层效果兼容IE6、IE7
2014/06/16 Javascript
javascript+html5实现绘制圆环的方法
2015/07/28 Javascript
jquery单击事件和双击事件冲突解决方案
2016/03/02 Javascript
AngularJS $injector 依赖注入详解
2016/09/14 Javascript
基于Vue2的独立构建与运行时构建的差别(详解)
2017/12/06 Javascript
浅谈基于Vue.js的移动组件库cube-ui
2017/12/20 Javascript
ajax请求data遇到的问题分析
2018/01/18 Javascript
如何在JavaScript中优雅的提取循环内数据详解
2019/03/04 Javascript
如何基于vue-cli3.0构建功能完善的移动端架子
2019/04/24 Javascript
如何在wxml中直接写js代码(wxs)
2019/11/14 Javascript
[42:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS OpTic
2018/03/31 DOTA
Python利用Nagios增加微信报警通知的功能
2016/02/18 Python
Python中分支语句与循环语句实例详解
2018/09/13 Python
Python小进度条显示代码
2019/03/05 Python
python实现两个经纬度点之间的距离和方位角的方法
2019/07/05 Python
python爬虫快速响应服务器的做法
2020/11/24 Python
美国知名生活购物网站:Goop
2017/11/03 全球购物
安德玛比利时官网:Under Armour比利时
2019/08/28 全球购物
递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)
2013/04/28 面试题
天网面试题
2013/04/07 面试题
JPA的优势都有哪些
2013/07/04 面试题
公司财务总监岗位职责
2013/12/14 职场文书
2015年美容师个人工作总结
2015/10/14 职场文书
教你解决往mysql数据库中存入汉字报错的方法
2021/05/06 MySQL