分享一个我自己写的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 option删除代码集合
Nov 12 Javascript
通过pjax实现无刷新翻页(兼容新版jquery)
Jan 31 Javascript
JavaScript实现Flash炫光波动特效
May 14 Javascript
设计模式中的facade外观模式在JavaScript开发中的运用
May 18 Javascript
基于JS代码实现实时显示系统时间
Jun 16 Javascript
深入理解jquery中extend的实现
Dec 22 Javascript
AngularJS $http模块POST请求实现
Apr 08 Javascript
vue.js开发环境搭建教程
May 04 Javascript
JavaScript实现获取用户单击body中所有A标签内容的方法
Jun 05 Javascript
vuex2中使用mapGetters/mapActions报错的解决方法
Oct 20 Javascript
微信上传视频文件提示(推荐)
Nov 22 Javascript
小程序二次贝塞尔曲线实现购物车商品曲线飞入效果
Jan 07 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
Laravel手动分页实现方法详解
2016/10/09 PHP
浅谈PHP拦截器之__set()与__get()的理解与使用方法
2016/10/18 PHP
zend框架实现支持sql server的操作方法
2016/12/08 PHP
newxtree.js代码
2007/03/13 Javascript
Extjs学习笔记之七 布局
2010/01/08 Javascript
json数据与字符串的相互转化示例
2013/09/18 Javascript
AngularJS入门教程之Cookies读写操作示例
2016/11/02 Javascript
AngularJS之ionic 框架下实现 Localstorage本地存储
2017/04/22 Javascript
vue2.0中click点击当前li实现动态切换class
2017/06/21 Javascript
Vue之Vue.set动态新增对象属性方法
2018/02/23 Javascript
vue 父组件中调用子组件函数的方法
2019/06/06 Javascript
vue的注意规范之v-if 与 v-for 一起使用教程
2019/08/04 Javascript
JavaScript监听触摸事件代码实例
2019/12/30 Javascript
[04:09]2014DOTA2国际邀请赛Ti西雅图 历届冠军相继出局 BBC综述今日比赛
2014/07/20 DOTA
python实现电子词典
2020/04/23 Python
Python中获取对象信息的方法
2015/04/27 Python
Python常用的文件及文件路径、目录操作方法汇总介绍
2015/05/21 Python
Python检测网站链接是否已存在
2016/04/07 Python
python合并同类型excel表格的方法
2018/04/01 Python
Python实现爬虫从网络上下载文档的实例代码
2018/06/13 Python
浅谈Python2、Python3相对路径、绝对路径导入方法
2018/06/22 Python
Python多线程处理实例详解【单进程/多进程】
2019/01/30 Python
Python实现插入排序和选择排序的方法
2019/05/12 Python
使用turtle绘制五角星、分形树
2019/10/06 Python
python如何修改文件时间属性
2021/02/05 Python
美国彩妆品牌:Coastal Scents
2017/04/01 全球购物
拉飞逸官网:Lafayette 148 New York
2020/07/15 全球购物
人力资源管理专业毕业生自我评价
2013/09/21 职场文书
公务员保密承诺书
2014/03/27 职场文书
拾金不昧表扬信
2015/01/16 职场文书
教师工作态度自我评价
2015/03/05 职场文书
学校财务管理制度
2015/08/04 职场文书
远程教育培训心得体会
2016/01/09 职场文书
使用HTML+Css+transform实现3D导航栏的示例代码
2021/03/31 HTML / CSS
MySQL COUNT函数的使用与优化
2021/05/10 MySQL
python+opencv实现目标跟踪过程
2022/06/21 Python