分享一个我自己写的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 相关文章推荐
jquery中的ajax方法怎样通过JSONP进行远程调用
May 04 Javascript
js生成缩略图后上传并利用canvas重绘
May 15 Javascript
JavaScript实现的内存数据库LokiJS介绍和入门实例
Nov 17 Javascript
javascript关于运动的各种问题经典总结
Apr 27 Javascript
浅谈Vue 初始化性能优化
Aug 31 Javascript
详解如何优雅地在React项目中使用Redux
Dec 28 Javascript
Vue-Router模式和钩子的用法
Feb 28 Javascript
vue .js绑定checkbox并获取、改变选中状态的实例
Aug 24 Javascript
浅谈vue项目打包优化策略
Sep 29 Javascript
Vue使用.sync 实现父子组件的双向绑定数据问题
Apr 04 Javascript
快速对接payjq的个人微信支付接口过程解析
Aug 15 Javascript
详解vue中多个有顺序要求的异步操作处理
Oct 29 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实现用户在线时间统计详解
2011/10/08 PHP
php使用base64加密解密图片示例分享
2014/01/20 PHP
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
2014/11/19 PHP
Laravel框架中实现使用阿里云ACE缓存服务
2015/02/10 PHP
解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的方法
2015/12/18 PHP
javascript学习随笔(使用window和frame)的技巧
2007/03/08 Javascript
jQuery获取注册信息并提示实现代码
2013/04/21 Javascript
jquery中常用的函数和属性详细解析
2014/03/07 Javascript
AngularJs中route的使用方法和配置
2016/02/04 Javascript
js验证真实姓名与身份证号,手机号的简单实例
2016/07/18 Javascript
AngularJS 简单应用实例
2016/07/28 Javascript
jQuery组件easyui对话框实现代码
2016/08/25 Javascript
HTML中setCapture、releaseCapture 使用方法浅析
2016/09/25 Javascript
bootstrap制作jsp页面(根据值让table显示选中)
2017/01/05 Javascript
基于 Bootstrap Datetimepicker 联动
2017/08/03 Javascript
vue文件树组件使用详解
2018/03/29 Javascript
微信小程序使用字体图标的方法
2019/05/23 Javascript
使用layer.msg 时间设置不起作用的解决方法
2019/09/12 Javascript
浅谈Vue使用Elementui修改默认的最快方法
2020/12/05 Vue.js
Python数据类型详解(一)字符串
2016/05/08 Python
Python使用matplotlib填充图形指定区域代码示例
2018/01/16 Python
PyCharm 设置SciView工具窗口的方法
2019/01/15 Python
Python pycharm 同时加载多个项目的方法
2019/01/17 Python
python调用pyaudio使用麦克风录制wav声音文件的教程
2019/06/26 Python
Python 余弦相似度与皮尔逊相关系数 计算实例
2019/12/23 Python
CSS3弹性布局内容对齐(justify-content)属性使用详解
2017/07/31 HTML / CSS
CSS3 实现时间轴动画
2020/11/25 HTML / CSS
Html+Css+Jquery实现左侧滑动拉伸导航菜单栏的示例代码
2020/03/17 HTML / CSS
2014年三八妇女节活动方案
2014/02/28 职场文书
搞笑爱情保证书
2014/04/29 职场文书
高三毕业典礼演讲稿
2014/05/13 职场文书
初中生毕业评语
2014/12/29 职场文书
2015年保险公司工作总结
2015/04/24 职场文书
2016大一新生入学教育心得体会
2016/01/23 职场文书
职业生涯规划书之大学四年
2019/08/07 职场文书
Spring Cloud Netflix 套件中的负载均衡组件 Ribbon
2022/04/13 Java/Android