分享一个我自己写的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 相关文章推荐
来自国外的14个图片放大编辑的jQuery插件整理
Oct 20 Javascript
控制页面按钮在后台执行期间不重复提交的JS方法
Jun 24 Javascript
JS定时刷新页面及跳转页面的方法
Jul 04 Javascript
gridpanel动态加载数据的实例代码
Jul 18 Javascript
javascript实现单击和双击并存的方法
Dec 13 Javascript
JavaScript设计模式之适配器模式介绍
Dec 28 Javascript
jQuery实现单击和鼠标感应事件
Feb 01 Javascript
JavaScript函数学习总结以及相关的编程习惯指南
Nov 16 Javascript
用js实现简单算法的实例代码
Sep 24 Javascript
十大热门的JavaScript框架和库
Mar 21 Javascript
关于element-ui的隐藏组件el-scrollbar的使用
May 29 Javascript
详解JavaScript 异步编程
Jul 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中DOMDocument简单用法示例代码(XML创建、添加、删除、修改)
2010/12/19 PHP
PHP自动重命名文件实现方法
2014/11/04 PHP
php结合ACCESS的跨库查询功能
2015/06/12 PHP
针对多用户实现头像上传功能PHP代码 适用于登陆页面制作
2016/08/17 PHP
js类中的公有变量和私有变量
2008/07/24 Javascript
JS前端框架关于重构的失败经验分享
2013/03/17 Javascript
关于JS判断图片是否加载完成且获取图片宽度的方法
2013/04/09 Javascript
浅谈jQuery事件绑定原理
2015/01/02 Javascript
js实现单击图片放大图片的方法
2015/02/17 Javascript
Nodejs关于gzip/deflate压缩详解
2015/03/04 NodeJs
jQuery实现根据类型自动显示和隐藏表单
2015/03/18 Javascript
js同源策略详解
2015/05/21 Javascript
一个仿微博登陆邮箱提示框js开发案例
2016/07/28 Javascript
JS继承之借用构造函数继承和组合继承
2016/09/07 Javascript
bootstrapValidator.min.js表单验证插件
2017/02/09 Javascript
js实现下拉菜单效果
2017/03/01 Javascript
JavaScript定时器setTimeout()和setInterval()详解
2017/08/18 Javascript
vue.js层叠轮播效果的实例代码
2018/11/08 Javascript
基于Node.js搭建hexo博客过程详解
2019/06/25 Javascript
JQuery表单元素取值赋值方法总结
2020/05/12 jQuery
vue 解决在微信内置浏览器中调用支付宝支付的情况
2020/11/09 Javascript
浅谈Vue使用Elementui修改默认的最快方法
2020/12/05 Vue.js
[11:27]《一刀刀一天》之DOTA全时刻20:TI4总奖金突破920W TS赛事分析
2014/06/18 DOTA
python中根据字符串调用函数的实现方法
2016/06/12 Python
动态规划之矩阵连乘问题Python实现方法
2017/11/27 Python
python实现银联支付和支付宝支付接入
2019/05/07 Python
CSS3 三维变形实现立体方块特效源码
2016/12/15 HTML / CSS
.NET面试题:什么是反射
2016/09/30 面试题
GWT都有什么特性
2016/12/02 面试题
销售人员自我评价
2014/02/01 职场文书
运动会800米加油稿
2014/02/22 职场文书
自查自纠整改报告
2014/11/06 职场文书
写给医生的感谢信
2015/01/22 职场文书
2015年毕业生自荐信范文
2015/03/24 职场文书
2015年三年级班主任工作总结
2015/05/21 职场文书
Python 可迭代对象 iterable的具体使用
2021/08/07 Python