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 相关文章推荐
JQuery的Validation插件中Remote验证的中文问题
Jul 26 Javascript
jQuery操作表格(table)的常用方法、技巧汇总
Apr 12 Javascript
学习JavaScript设计模式之中介者模式
Jan 14 Javascript
js添加千分位的实现代码(超简单)
Aug 01 Javascript
详解微信小程序开发—你期待的分享功能来了,微信小程序序新增5大功能
Dec 23 Javascript
微信小程序 Toast自定义实例详解
Jan 20 Javascript
JQueryMiniUI按照时间进行查询的实现方法
Jun 07 jQuery
JavaScript变量作用域_动力节点Java学院整理
Jun 27 Javascript
微信小程序开发之好友列表字母列表跳转对应位置
Sep 26 Javascript
Vue自定义过滤器格式化数字三位加一逗号实现代码
Mar 23 Javascript
vue2.x 对象劫持的原理实现
Apr 19 Javascript
5种方法告诉你如何使JavaScript 代码库更干净
Sep 15 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
德生PL550的电路分析
2021/03/02 无线电
phpMyAdmin 链接表的附加功能尚未激活的问题
2010/08/01 PHP
基于PHP对XML的操作详解
2013/06/07 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
使用composer命令加载vendor中的第三方类库 的方法
2019/07/09 PHP
Mootools 1.2教程 Tooltips
2009/09/15 Javascript
ASP.NET jQuery 实例4(复制TextBox的文本到本地剪贴板上)
2012/01/13 Javascript
jquery常用操作小结
2014/07/21 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
2014/12/31 Javascript
JavaScript禁止用户多次提交的两种方法
2016/07/24 Javascript
BootStrap Typeahead自动补全插件实例代码
2016/08/10 Javascript
ES6中的数组扩展方法
2016/08/26 Javascript
etmvc+jQuery EasyUI+combobox多值操作实现角色授权实例
2016/11/09 Javascript
基于Bootstrap和jQuery构建前端分页工具实例代码
2016/11/23 Javascript
JS键盘版计算器的制作方法
2016/12/03 Javascript
javascript中call,apply,bind函数用法示例
2016/12/19 Javascript
bootstrap导航栏、下拉菜单、表单的简单应用实例解析
2017/01/06 Javascript
JS身份证信息验证正则表达式
2017/06/12 Javascript
vue过渡和animate.css结合使用详解
2017/06/14 Javascript
vuejs使用axios异步访问时用get和post的实例讲解
2018/08/09 Javascript
vue实现权限控制路由(vue-router 动态添加路由)
2019/11/04 Javascript
Vue.directive 实现元素scroll逻辑复用
2019/11/29 Javascript
Python 正则表达式(转义问题)
2014/12/15 Python
Python中的super用法详解
2015/05/28 Python
Django 拼接两个queryset 或是两个不可以相加的对象实例
2020/03/28 Python
全面介绍python中很常用的单元测试框架unitest
2020/12/14 Python
CSS3 选择器 属性选择器介绍
2012/01/21 HTML / CSS
印度网上购物首选目的地:Flipkart
2016/08/01 全球购物
请描述一下”is a”关系和”has a”关系
2015/02/03 面试题
请说出以下代码输出什么
2013/08/30 面试题
2015年医院工作总结范文
2015/04/09 职场文书
2015年暑期实践报告范文
2015/07/13 职场文书
2016年教师节慰问信
2015/12/01 职场文书
党组织结对共建协议书
2016/03/23 职场文书
nginx部署多前端项目的几种方法
2021/05/25 Servers
Go语言基础切片的创建及初始化示例详解
2021/11/17 Golang