分享一个我自己写的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中confirm,alert,prompt函数区别分析
Jan 17 Javascript
ExtJS DOM元素操作经验分享
Aug 28 Javascript
JavaScript初学者建议:不要去管浏览器兼容
Feb 04 Javascript
js实现点击后将文字或图片复制到剪贴板的方法
Aug 04 Javascript
用jquery模仿的a的title属性的例子
Oct 22 Javascript
常用原生JS兼容性写法汇总
Apr 27 Javascript
json与jsonp知识小结(推荐)
Aug 16 Javascript
原生JS实现首页进度加载动画
Sep 14 Javascript
什么是JavaScript注入攻击?
Sep 14 Javascript
JS奇技之利用scroll来监听resize详解
Jun 15 Javascript
基于JS实现web端录音与播放功能
Apr 17 Javascript
详解Node.js一行命令上传本地文件到服务器
Apr 22 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 表单验证实现代码
2009/03/10 PHP
php fckeditor 调用的函数
2009/06/21 PHP
PHP设计模式之责任链模式的深入解析
2013/06/13 PHP
php对包含html标签的字符串进行截取的函数分享
2014/06/19 PHP
JavaScript实现删除电脑的关机键
2016/07/26 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
php利用ZipArchive类操作文件的实例
2020/01/21 PHP
IE 缓存策略的BUG的解决方法
2007/07/21 Javascript
javascript 解析后的xml对象的读取方法细解
2009/07/25 Javascript
javascript 获取页面的高度及滚动条的位置的代码
2010/05/06 Javascript
js过滤数组重复元素的方法
2010/09/05 Javascript
原生javascript实现无间缝滚动示例
2014/01/28 Javascript
php实例分享之实现显示网站运行时间
2014/05/20 Javascript
angularJS中$apply()方法详解
2015/01/07 Javascript
用JS写的一个Ajax库(实例代码)
2016/08/06 Javascript
jquery中绑定事件的异同
2017/02/28 Javascript
JS实现双击内容变为可编辑状态
2017/03/03 Javascript
安装vue-cli的简易过程
2018/05/22 Javascript
Vue前端项目部署IIS的实现
2020/01/06 Javascript
JavaScript十大取整方法实例教程
2020/12/03 Javascript
[01:19:46]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第一场 2月28日
2021/03/11 DOTA
Pycharm导入Python包,模块的图文教程
2018/06/13 Python
Django中更改默认数据库为mysql的方法示例
2018/12/05 Python
详解Python字典的操作
2019/03/04 Python
Python3.6中Twisted模块安装的问题与解决
2019/04/15 Python
python中单下划线(_)和双下划线(__)的特殊用法
2019/08/29 Python
python retrying模块的使用方法详解
2019/09/25 Python
Python 使用 prettytable 库打印表格美化输出功能
2019/12/26 Python
已安装tensorflow-gpu,但keras无法使用GPU加速的解决
2020/02/07 Python
scrapy数据存储在mysql数据库的两种方式(同步和异步)
2020/02/18 Python
浅谈django 模型类使用save()方法的好处与注意事项
2020/03/28 Python
普通PHP程序员笔试题
2016/01/01 面试题
人力资源管理专业应届生求职信
2013/09/28 职场文书
内业资料员岗位职责
2014/01/04 职场文书
2014年话务员工作总结
2014/11/19 职场文书
普希金诗歌赏析(6首)
2019/08/22 职场文书