分享一个我自己写的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 相关文章推荐
javascript中对对层的控制
Dec 29 Javascript
Javascript 获取链接(url)参数的方法
Feb 15 Javascript
javascript获取当前日期时间及其它操作函数
Jan 11 Javascript
读jQuery之十 事件模块概述
Jun 27 Javascript
append和appendTo的区别以及appendChild用法
Dec 24 Javascript
jQuery实现html表格动态添加新行的方法
May 28 Javascript
微信小程序 progress组件详解及实例代码
Oct 25 Javascript
js设置文字颜色的方法示例
Dec 30 Javascript
JavaScript 获取元素在父节点中的下标(推荐)
Jun 28 Javascript
JQuery判断radio单选框是否选中并获取值的方法
Jan 17 jQuery
详解Vue项目引入CreateJS的方法(亲测可用)
May 30 Javascript
微信小程序入门之绘制时钟
Oct 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 采集获取指定网址的内容
2010/01/05 PHP
thinkPHP3.2使用RBAC实现权限管理的实现
2019/08/27 PHP
Extjs3.0 checkboxGroup 动态添加item实现思路
2013/08/14 Javascript
查看大图功能代码jquery版
2013/11/05 Javascript
深入分析下javascript中的[]()+!
2015/07/07 Javascript
jQuery新窗口打开外链接
2016/07/21 Javascript
使用AngularJS 跨站请求如何解决jsonp请求问题
2017/01/16 Javascript
vue登录注册及token验证实现代码
2017/12/14 Javascript
3分钟了解vue数据劫持的原理实现
2019/05/01 Javascript
layer设置maxWidth及maxHeight解决方案
2019/07/26 Javascript
小程序开发之模态框组件封装
2020/04/23 Javascript
linux系统使用python监测网络接口获取网络的输入输出
2014/01/15 Python
python实现统计代码行数的方法
2015/05/22 Python
python中Matplotlib实现绘制3D图的示例代码
2017/09/04 Python
Python 函数基础知识汇总
2018/03/09 Python
用Python shell简化开发
2018/08/08 Python
python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算
2019/07/18 Python
python实现批量nii文件转换为png图像
2019/07/18 Python
Python爬虫实现使用beautifulSoup4爬取名言网功能案例
2019/09/15 Python
Python使用Pandas读写Excel实例解析
2019/11/19 Python
html5页面结构_动力节点Java学院整理
2017/07/10 HTML / CSS
HomeAway的巴西品牌:Alugue Temporada
2018/04/10 全球购物
神话般的珠宝:Ross-Simons
2020/07/13 全球购物
2013年保送生自荐信格式
2013/11/20 职场文书
大学毕业生自荐书怎么写?
2014/01/06 职场文书
运动会通讯稿150字
2014/02/15 职场文书
服装设计师职业生涯规划范文
2014/02/28 职场文书
物理学专业自荐信
2014/06/11 职场文书
小学综治宣传月活动总结
2014/07/02 职场文书
助残日活动总结
2014/08/27 职场文书
2014年干部培训工作总结
2014/12/17 职场文书
酒店辞职书怎么写
2015/02/26 职场文书
带你彻底理解JavaScript中的原型对象
2021/04/14 Javascript
粗暴解决CUDA out of memory的问题
2021/05/22 Python
手把手教你实现PyTorch的MNIST数据集
2021/06/28 Python
JavaScript分页组件使用方法详解
2021/07/26 Javascript