分享一个我自己写的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代码设定一个统一的入口
Jun 15 Javascript
JavaScript阻止事件冒泡示例分享
Dec 28 Javascript
究竟什么是Node.js?Node.js有什么好处?
May 29 Javascript
Vue中div contenteditable 的光标定位方法
Aug 25 Javascript
vue弹窗插件实战代码
Sep 08 Javascript
详解vue 项目白屏解决方案
Oct 31 Javascript
小程序实现页面顶部选项卡效果
Nov 06 Javascript
原来JS还可以这样拆箱转换详解
Feb 01 Javascript
Vue结合后台导入导出Excel问题详解
Feb 19 Javascript
小程序实现日历左右滑动效果
Oct 21 Javascript
原生javascript单例模式的应用实例分析
Feb 23 Javascript
js节流防抖应用场景,以及在vue中节流防抖的具体实现操作
Sep 21 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获取网卡地址的代码
2008/04/09 PHP
PHP @ at 记号的作用示例介绍
2014/10/10 PHP
浅析php单例模式
2014/11/25 PHP
PHP概率计算函数汇总
2015/09/13 PHP
ThinkPHP中Common/common.php文件常用函数功能分析
2016/05/20 PHP
用HTML/JS/PHP方式实现页面延时跳转的简单实例
2016/07/18 PHP
jquery分页插件AmSetPager(自写)
2013/04/15 Javascript
5种处理js跨域问题方法汇总
2014/12/04 Javascript
javascript数组遍历for与for in区别详解
2014/12/04 Javascript
AngularJs 60分钟入门基础教程
2016/04/03 Javascript
扩展Bootstrap Tooltip插件使其可交互的方法
2016/11/07 Javascript
js实现获取鼠标当前的位置
2016/12/14 Javascript
vue.js父组件使用外部对象的方法示例
2017/04/25 Javascript
Angular X中使用ngrx的方法详解(附源码)
2017/07/10 Javascript
js使用html2canvas实现屏幕截取的示例代码
2017/08/28 Javascript
vue 使某个组件不被 keep-alive 缓存的方法
2018/09/21 Javascript
Angular ui-roter 和AngularJS 通过 ocLazyLoad 实现动态(懒)加载模块和依赖
2018/11/25 Javascript
详解一个基于react+webpack的多页面应用配置
2019/01/21 Javascript
javascript面向对象三大特征之封装实例详解
2019/07/24 Javascript
JS中的模糊查询功能
2019/12/08 Javascript
基于p5.js 2D图像接口的扩展(交互实现)
2020/11/30 Javascript
[02:15]2014DOTA2国际邀请赛 赛后退役选手回顾
2014/08/01 DOTA
[02:49]DOTA2完美大师赛首日观众采访
2017/11/23 DOTA
[01:19:46]EG vs Secret 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
python海龟绘图实例教程
2014/07/24 Python
Python彩色化Linux的命令行终端界面的代码实例分享
2016/07/02 Python
利用pandas将numpy数组导出生成excel的实例
2018/06/14 Python
python多线程抽象编程模型详解
2019/03/20 Python
Django 导出项目依赖库到 requirements.txt过程解析
2019/08/23 Python
解决python 上传图片限制格式问题
2019/10/30 Python
关于python scrapy中添加cookie踩坑记录
2020/11/17 Python
全网最全python库selenium自动化使用详细教程
2021/01/12 Python
Steiff台湾官网:德国金耳釦泰迪熊
2019/12/26 全球购物
证婚人搞笑证婚词
2014/01/10 职场文书
法院干警四风问题自我剖析材料
2014/09/29 职场文书
社区四风存在问题及整改措施
2014/10/26 职场文书