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 相关文章推荐
来自chinaz的ajax获取评论代码
May 03 Javascript
javascript垃圾收集机制与内存泄漏详细解析
Nov 11 Javascript
关于jquery中全局函数each使用介绍
Dec 10 Javascript
jquery toolbar与网页浮动工具条具体实现代码
Jan 12 Javascript
js对象内部访问this修饰的成员函数示例
Apr 27 Javascript
关闭时刷新父窗口两种方法
May 07 Javascript
Javascript中封装window.open解决不兼容问题
Sep 28 Javascript
js实现百度登录框鼠标拖拽效果
Mar 07 Javascript
关于Stream和Buffer的相互转换详解
Jul 26 Javascript
vue+Vue Router多级侧导航切换路由(页面)的实现代码
Dec 20 Javascript
vue 源码解析之虚拟Dom-render
Aug 26 Javascript
Vue监听滚动实现锚点定位(双向)示例
Nov 13 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
谈谈PHP语法(4)
2006/10/09 PHP
PHP 缓存实现代码及详细注释
2010/05/16 PHP
php while循环得到循环次数
2013/10/26 PHP
php实现的操作excel类详解
2016/01/15 PHP
PHP的Yii框架中移除组件所绑定的行为的方法
2016/03/18 PHP
PHP面试常用算法(推荐)
2016/07/22 PHP
PHP7匿名类用法分析
2016/09/26 PHP
PHP的介绍以及优势详细分析
2019/09/05 PHP
上传的js验证(图片/文件的扩展名)
2013/04/25 Javascript
jQuery随便控制任意div隐藏的方法
2013/06/28 Javascript
Angular实现form自动布局
2016/01/28 Javascript
深入理解JS正则表达式---分组
2016/07/18 Javascript
vue基于Element构建自定义树的示例代码
2017/09/19 Javascript
extract-text-webpack-plugin用法详解
2019/02/14 Javascript
JavaScript中关于base64的一些事
2019/05/06 Javascript
JS页面获取 session 值,作用域和闭包学习笔记
2019/10/16 Javascript
解决React在安装antd之后出现的Can't resolve './locale'问题(推荐)
2020/05/03 Javascript
vue实现员工信息录入功能
2020/06/11 Javascript
关于angular 8.1使用过程中的一些记录
2020/11/25 Javascript
[01:09:24]Ti4开幕式
2014/07/19 DOTA
常见的python正则用法实例讲解
2016/06/21 Python
50行Python代码实现人脸检测功能
2018/01/23 Python
信号生成及DFT的python实现方式
2020/02/25 Python
达拉斯牛仔官方商店:Dallas Cowboys Pro Shop
2018/02/10 全球购物
个人找工作的自我评价
2013/10/17 职场文书
建筑自我鉴定
2013/10/19 职场文书
成功的餐厅经营创业计划书
2014/01/15 职场文书
学生个人自我鉴定范文
2014/03/28 职场文书
项目合作协议书
2014/04/16 职场文书
邻里守望志愿服务活动方案
2014/08/15 职场文书
共青团员自我评价
2015/03/10 职场文书
2015年学校工作总结范文
2015/04/20 职场文书
公司周年庆典致辞
2015/07/30 职场文书
同事离别感言
2015/08/04 职场文书
css display table 自适应高度、宽度问题的解决
2021/05/07 HTML / CSS
解决Tkinter中button按钮未按却主动执行command函数的问题
2021/05/23 Python