分享一个我自己写的ToolTip提示插件(附源码)


Posted in Javascript onJanuary 20, 2013

继续分享一个我自己写的 ToolTip提示插件,希望大家支持我,给我点评论,哪怕骂我的也好啊,让我知道有人在关注我“小豆” 嘿嘿。废话不多说上代码!

$.fn.ToolTip = function (option) { 
var defaults = { 
direction: "down", 
star: function () { }, 
from: $(this), 
url: '../images/arrow.png' 
}; 
//方法内基础变量 
var opt = $.extend(defaults, option), 
dirarray = ['up', 'down', 'left', 'right'], 
left = 0, top = 0, _left = 0, _top = 0, arrow_w = 15, arrow_h = 60, timeout, arrow = '0 0'; 
//开始遍历 
$(this).each(function () { 
var obj = $(this); 
obj.on({ 
mouseenter: function () { 
GetPos(obj); 
var objtip = $("<div class='tooltip'></div>").css({ 
position: "absolute", 
top: top, 
left: left, 
border: "solid 1px #ccc", 
width: $("#" + obj.attr("data-tooltip")).outerWidth(true), 
height: $("#" + obj.attr("data-tooltip")).outerHeight(true), 
'border-radius': '8px 8px', 
'background-color': '#fff', 
'z-index': 999 
}).appendTo(obj); 
var objtiphead = $("<div></div>").css({ 
width: arrow_w == 30 ? objtip.outerWidth(true) : 15, 
height: arrow_h == 30 ? objtip.outerHeight(true) : 15, 
position: "absolute", 
top: _top, 
left: _left 
}).appendTo(objtip); 
var objtiparrow = $("<div></div>").css({ 
width: arrow_w, 
height: arrow_h, 
"background-image": "url(" + opt.url + ")", 
"background-repeat": "no-repeat", 
"background-position": arrow 
}).appendTo(objtiphead); 
objtip.append($("#" + obj.attr("data-tooltip")).clone().show()); 
objtip.on({ 
mouseenter: function () { 
obj.data({ 
attip: true 
}); 
}, mouseleave: function () { 
$(".tooltip").remove(); 
obj.removeData("attip"); 
} 
}); 
} 
, mouseleave: function () { 
if (!obj.data("attip")) 
$(".tooltip").remove(); 
obj.removeData("attip"); 
} 
}); 
}); 
//得出位置 
var GetPos = function (obj) { 
var objtip = $("#" + obj.attr("data-tooltip")); 
var tooltippos = { 
up: function () { 
arrow_w = 30; arrow_h = 15; 
top = obj.position().top - 12 - objtip.outerHeight(true); 
left = obj.position().left; 
_top = objtip.outerHeight(true); 
_left = 15; 
arrow = '-50px -50px'; 
}, 
down: function () { 
arrow_w = 30; arrow_h = 15; 
top = obj.position().top + 12 + obj.height(); 
left = obj.position().left; 
_top = -15; 
_left = 15; 
arrow = '-50px 0'; 
}, 
right: function () { 
arrow_w = 15; 
arrow_h = 30; 
top = obj.position().top; 
left = obj.position().left - 12 - objtip.outerWidth(true); 
_top = 15; 
_left = objtip.outerWidth(true); 
arrow = '-80px -20px'; 
}, 
left: function () { 
arrow_w = 15; 
arrow_h = 30; 
top = obj.position().top; 
left = obj.position().left + obj.width() + 12; 
_top = 15; 
_left = -15; 
arrow = '0 -20px'; 
} 
}; 
opt.star(); 
opt.direction = $.inArray(opt.direction, dirarray) != -1 ? opt.direction : "down"; 
switch (opt.direction) { 
case "up": 
if (obj[0].getBoundingClientRect().top - 10 - objtip.outerHeight() > 0) 
tooltippos.up(); 
else 
tooltippos.down(); 
break; 
case "down": 
if (obj[0].getBoundingClientRect().top + 10 + obj.height() + objtip.outerHeight() < $(window).height()) 
tooltippos.down(); 
else 
tooltippos.up(); 
break; 
case "right": 
if (obj[0].getBoundingClientRect().left - 10 - objtip.outerWidth() > 0) 
tooltippos.right(); 
else 
tooltippos.left(); 
break; 
case "left": 
if (obj[0].getBoundingClientRect().left + obj.width() + 10 + objtip.outerWidth() < $(window).width()) 
tooltippos.left(); 
else 
tooltippos.right(); 
} 
} 
}

经测试,好像IE7 箭头有指向错误,大家可以修改下。小问题啦,洒洒水啦~
效果图
分享一个我自己写的ToolTip提示插件(附源码) 
当然,里面是什么内容,那就要自己创造了,我只是写了一个展示div,用法很简单的。
源码下载
操作说明是对用户体验师的侮辱!
Javascript 相关文章推荐
js中匿名函数的N种写法
Sep 08 Javascript
JavaScript获取多个数组的交集简单实例
Nov 11 Javascript
用js提交表单解决一个页面有多个提交按钮的问题
Sep 01 Javascript
详解jquery中$.ajax方法提交表单
Nov 03 Javascript
深入探寻javascript定时器
Jan 02 Javascript
分享使用AngularJS创建应用的5个框架
Dec 05 Javascript
webpack常用配置项配置文件介绍
Nov 07 Javascript
vue 1.x 交互实现仿百度下拉列表示例
Oct 21 Javascript
react-redux中connect的装饰器用法@connect详解
Jan 13 Javascript
关闭Vue计算属性自带的缓存功能方法
Mar 02 Javascript
layui 数据表格 点击分页按钮 监听事件的实例
Sep 02 Javascript
vue接通后端api以及部署到服务器操作
Aug 13 Javascript
使用jQuery.fn自定义jQuery翻页插件
Jan 20 #Javascript
javascript改变position值实现菜单滚动至顶部后固定
Jan 18 #Javascript
js+数组实现网页上显示时间/星期几的实用方法
Jan 18 #Javascript
javascript限制文本框只允许输入数字(曾经与现在的方法对比)
Jan 18 #Javascript
js replace正则表达式应用案例讲解
Jan 17 #Javascript
Javascript模块化编程(三)require.js的用法及功能介绍
Jan 17 #Javascript
Javascript模块化编程(一)AMD规范(规范使用模块)
Jan 17 #Javascript
You might like
php json_encode奇怪问题说明
2011/09/27 PHP
第六章 php目录与文件操作
2011/12/30 PHP
php强制运行广告的方法
2014/12/01 PHP
lnmp安装多版本PHP共存的方法详解
2018/08/02 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
2019/12/20 PHP
js利用div背景,做一个竖线的效果。
2008/11/22 Javascript
jquery中的mouseleave和mouseout的区别 模仿下拉框效果
2012/02/07 Javascript
使用ajaxfileupload.js实现ajax上传文件php版
2014/06/26 Javascript
JS实现横向拉伸动感伸缩菜单效果代码
2015/09/04 Javascript
Javascript blur与click冲突解决办法
2017/01/09 Javascript
JS获取短信验证码倒计时的实现代码
2017/05/22 Javascript
nodejs搭建本地服务器轻松解决跨域问题
2018/03/21 NodeJs
详解vue数组遍历方法forEach和map的原理解析和实际应用
2018/11/15 Javascript
JavaScript ES6常用基础知识总结
2019/02/09 Javascript
JavaScript实现复选框全选和取消全选
2020/11/20 Javascript
使用python搭建Django应用程序步骤及版本冲突问题解决
2013/11/19 Python
python使用装饰器和线程限制函数执行时间的方法
2015/04/18 Python
Python实现模拟分割大文件及多线程处理的方法
2017/10/10 Python
Django中反向生成models.py的实例讲解
2018/05/30 Python
python matlibplot绘制多条曲线图
2021/02/19 Python
在python中将字符串转为json对象并取值的方法
2018/12/31 Python
Python逐行读取文件中内容的简单方法
2019/02/26 Python
python中列表的切片与修改知识点总结
2019/07/23 Python
Python实现微信小程序支付功能
2019/07/25 Python
Django项目基础配置和基本使用过程解析
2019/11/25 Python
python单向循环链表原理与实现方法示例
2019/12/03 Python
Python字符串函数strip()原理及用法详解
2020/07/23 Python
Python如何输出百分比
2020/07/31 Python
AVI-8手表美国官方商店:AVI-8 USA
2019/04/10 全球购物
员工自我鉴定
2013/10/09 职场文书
小学生秋游活动方案
2014/02/23 职场文书
离婚协议书范本样本
2014/08/19 职场文书
2014年绩效考核工作总结
2014/12/11 职场文书
2014年生产部工作总结
2014/12/17 职场文书
毕业赠语大全
2015/06/23 职场文书
Spring Data JPA框架的核心概念和Repository接口
2022/04/28 Java/Android