效果改自:http://inezha.com/p/7797945/item737

代码注释已经尽可能的详细了,也不多说了.

越用jquery就越喜欢用它...

bubble.js:

/*
* @date: 2010-5-30 11:57:22
* @author: 胡灵伟
* Depends:
* jquery.js
*
* function:气泡提示效果
* use:$("selectors").bubble({fn:getdata, width:width, height:height});
* 对所有需要气泡提示效果的对象使用bubble方法,
* fn为气泡中显示内容获得方法,即fn中返回的数据会显示在气泡中
* 以样式指代div则有:
* width\height为contents的width\height属性
* 气泡总width为left.width + contents.width + right.width
* 气泡总height为top.height + contents.height + bottom.height
*/
(function ($) {
$.fn.bubble = function (options) {
Bubble = function(){
this.defaults = {
distance : 10,
time : 250,
hideDelay : 500,
width:100,
height:100
};
this.options = $.extend(this.defaults, options);
this.hideDelayTimer = new Array();
this.shown = new Array();
this.beingShown = new Array();
this.popup = new Array();
this.trigger = new Array();
this.makebubble = function(w, h){
var tpl = $('<div class="bubble-popup"></div>').append('<div class="topleft"></div>').append('<div class="top"></div>')
.append($('<div class="topright"></div>')).append('<div class="left"></div>')
.append('<div class="contents"></div>').append('<div class="right"></div>')
.append('<div class="bottomleft"></div>')
.append($('<div class="bottom"></div>')
.append($('<div class="bottomtail"></div>')))
.append('<div class="bottomright"></div>').appendTo('body');
     tpl.width(w + 38);
tpl.find('.left, .right, .contents').each(function(){$(this).height(h)});
tpl.find('.top, .bottom, .contents').each(function(){$(this).width(w)});
return tpl;
};
this.add = function(triggers, options){
//此处的options为每次调用add方法传进来的参数,比如指定获取数据的方法fn, 气泡宽width高height
//console.debug("length:"+triggers.length);
var t = this.trigger.length;
//将新加入的需要气泡提示效果的对象放到trigger数组中
for(var j =0;j<triggers.length;j++)
this.trigger.push(triggers[j]);
//console.debug("trigger.length:" + this.trigger.length);
var hout = this.handleout;
var hover = this.handleover;
var obj = this;
//为新加入的对象绑定鼠标监听事件
triggers.each(function(ind){
$(this).unbind('mouseover').mouseover(function(){
hover(t + ind, obj, options);
}).unbind('mouseout').mouseout(function(){
hout(t + ind, obj, options);
});
});
};
this.handleover = function(i, obj, options){
//console.debug("hideDelayTimer.length:" + obj.hideDelayTimer.length);
//当新触发冒气泡事件时原先的定时器还没结束则将原来的定时器清除
if (obj.hideDelayTimer[i]) clearTimeout(obj.hideDelayTimer[i]);
if (obj.beingShown[i] || obj.shown[i]) {
//如果气泡正在冒或已经冒出来了则不再重复冒气泡
return;
} else {
var trigger = $(obj.trigger[i]);
//标记正在冒气泡
obj.beingShown[i] = true;
//创建气泡
obj.popup[i] = obj.makebubble(options.width||obj.options.width, options.height||obj.options.height);
//对于气泡绑定同样的事件以使得鼠标离开触发对象后放到气泡上时气泡不会消失
obj.popup[i].mouseover(function(){obj.handleover(i, obj)}).mouseout(function(){obj.handleout(i, obj)});
//调用获取数据的方法fn来显示数据
obj.options.fn(obj.trigger[i], function(data){
obj.popup[i].find('.contents').text(data);
});
//设定气泡的位置和显示属性,气泡默认出现在触发对象正上方
obj.popup[i].css({
top: trigger.offset().top-obj.popup[i].height(),
left: trigger.offset().left + trigger.width()/2 - obj.popup[i].width()/2,
display: 'block'
}).animate(
//由于万恶的IE不能同时支持PNG半透明和滤镜,所以对于IE不使用滤镜
$.browser.msie?{
top: '-=' + obj.options.distance + 'px'
}:{
top: '-=' + obj.options.distance + 'px',
opacity: 1
}, obj.options.time, 'swing', function() {
obj.beingShown[i] = false;
obj.shown[i] = true;
});
}
return false;
};
this.handleout = function(i, obj, options){
//console.debug("hideDelayTimer["+i+"]:"+obj.hideDelayTimer[i]);
//处理当因为某些意外操作使得没有触发鼠标进入事件而直接再次触发鼠标离开事件时的情况
if (obj.hideDelayTimer[i]) clearTimeout(obj.hideDelayTimer[i]);
obj.hideDelayTimer[i] = setTimeout(function () {
obj.hideDelayTimer[i] = null;
try{
         obj.popup[i].animate(
$.browser.msie?{
top: '-=' + obj.options.distance + 'px'
}:{
top: '-=' + obj.options.distance + 'px',
opacity: 0//渐隐效果
}, obj.options.time, 'swing', function () {
obj.shown[i] = false;
obj.popup[i].css('display', 'none');
obj.popup[i] = null;
});}catch(e){};
}, obj.options.hideDelay);
return false;
};
};
$.bubble = new Bubble();//单例
$.bubble.add(this, options);
};
})(jQuery);

用到的样式:

<style type="text/css" media="screen">
<!--
* {
margin: 0;
padding: 0;
}

body {
padding: 10px;
}

h1 {
margin: 14px 0;
font-family: 'Trebuchet MS', Helvetica;
}

.bubbletrigger {
}

/* Bubble pop-up */
.bubble-popup {
position: absolute;
display: none;
z-index: 50;
border-collapse: collapse;
}
.bubble-popup .topleft {
width: 19px;
height: 15px;
float:left;
background-image: url(../images/bubble/bubble-1.png);
/*解决ie6PNG背景透明bug*/
_background-image:none; /* IE6 */
_filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=noscale, src='images/bubble/bubble-1.png'); /* IE6 */
}

.bubble-popup .top {
width: 100px;
height: 15px;
float:left;
background-image: url(../images/bubble/bubble-2.png);
/*解决ie6PNG背景透明bug*/
_background-image:none; /* IE6 */
_filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src='images/bubble/bubble-2.png'); /* IE6 */
}

.bubble-popup .topright {
width: 19px;
height: 15px;
float:left;
background-image: url(../images/bubble/bubble-3.png);
/*解决ie6PNG背景透明bug*/
_background-image:none; /* IE6 */
_filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=noscale, src='images/bubble/bubble-3.png'); /* IE6 */
}

.bubble-popup .left {
clear: left;
width: 19px;
height: 30px;
float:left;
background-image: url(../images/bubble/bubble-4.png);
/*解决ie6PNG背景透明bug*/
_background-image:none; /* IE6 */
_filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src='images/bubble/bubble-4.png'); /* IE6 */
}

.bubble-popup .contents {
white-space: normal;
word-break: break-all;
float:left;
font-size: 12px;
line-height: 1.2em;
background-color: #fff;
color: #66BDED;
font-family: "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans",
sans-serif;
}

.bubble-popup .right {
width: 19px;
height: 30px;
float:left;
background-image: url(../images/bubble/bubble-5.png);
/*解决ie6PNG背景透明bug*/
_background-image:none; /* IE6 */
_filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src='images/bubble/bubble-5.png'); /* IE6 */
}

.bubble-popup .bottomleft {
clear: left;
width: 19px;
height: 15px;
float:left;
background-image: url(../images/bubble/bubble-6.png);
/*解决ie6PNG背景透明bug*/
_background-image:none; /* IE6 */
_filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=noscale, src='images/bubble/bubble-6.png'); /* IE6 */
}

.bubble-popup .bottom {
width: 100px;
height: 15px;
float:left;
background-image: url(../images/bubble/bubble-7.png);
/*解决ie6PNG背景透明bug*/
_background-image:none; /* IE6 */
_filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src='images/bubble/bubble-7.png'); /* IE6 */
text-align: center;
}

.bubble-popup .bottomtail {
width: 30px;
height: 29px;
margin: 0 auto;
display:block;
background-image: url(../images/bubble/bubble-tail2.png);
/*解决ie6PNG背景透明bug*/
_background-image:none; /* IE6 */
_filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=noscale, src='images/bubble/bubble-tail2.png'); /* IE6 */
}

.bubble-popup .bottomright {
width: 19px;
height: 15px;
float:left;
background-image: url(../images/bubble/bubble-8.png);
/*解决ie6PNG背景透明bug*/
_background-image:none; /* IE6 */
_filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=noscale, src='images/bubble/bubble-8.png'); /* IE6 */
}

-->
</style>

使用方法:(用到的图片样式img.zip,注意路径,没图片是很难看的...)

<script src="../js/jquery-1.4.2.min.js" type="text/javascript"></script>
<script src="../js/bubble-1.0.js" type="text/javascript"></script>
<script type="text/javascript"><!--
aa = function(obj, callback){
$.ajax({
type : 'POST',
data : {word:$(obj).attr('alt'),rand:Math.random()},
url : 'http://localhost/xun/ajax.svl?method=getdetailinfo',
dataType : 'text',
timeout : 1000,
success : function(data){
callback(data);
}
});
};
bb = function(obj, callback){
$.ajax({
type : 'POST',
data : {word:$(obj).attr('alt'),rand:Math.random()},
url : 'http://localhost/xun/ajax.svl?method=getdetailinfo',
dataType : 'text',
timeout : 1000,
success : function(data){
callback(data + "aaaa");
}
});
};
$(function(){
$('.bubbletrigger').bubble({width:150, height: 100, fn:aa});
$('#a').bubble({fn:bb});
});
//
--></script>
</head>
<body id="page">

<h1>jQuery Bubble Example</h1>
<div>
<br/>aaaaaaaaaa
<br/>aaaaaaaaaaaaaaaaaaaa
<br/>aaaaaaaaaaaaaaaaaaaaaaaaaaaa
<br/>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
<br/>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
<br/>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
</div>
<div style="padding-left:100px;">
<img class="bubbletrigger" alt="a" src="../images/bubble/starburst.gif" />

<img class="bubbletrigger" alt="b" src="../images/bubble/starburst.gif" />

<img class="bubbletrigger" alt="c" src="../images/bubble/starburst.gif" />

<img class="bubbletrigger" alt="d" src="../images/bubble/starburst.gif" />

<img id="a" alt="e" src="../images/bubble/starburst.gif" />
</div>

</body>

servlet只要返回一段字符串就可以了,就不贴了.

转载于:https://www.cnblogs.com/adaikiss/archive/2010/05/30/1747428.html

jquery气泡提示效果相关推荐

  1. 气泡提示效果css.html,用纯CSS3绘制高端简约的气泡提示框

    用纯css绘制一个简单的气泡提示框,对于长期关注课课家CSS3绘图教程的朋友来说是件轻而易举的事,但是程序员最不喜欢做的事情是重复造轮子,加上之前小编分享的几个气泡要么过于复杂,通用性不强,要么需要鼠 ...

  2. jquery图片提示效果

    如图所示是我的效果! <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:// ...

  3. java 气泡_Java气泡提示功能实现

    一个用Swing实现的java气泡提示效果. 运行效果如下图: package org.loon.swing.display; import java.awt.BorderLayout; import ...

  4. html中文本框的透明度,jQuery实现textarea文本框半透明文本提示效果

    jquery实现textarea文本框带有半透明文本提示效果: textarea文本框一般用于编辑大段的文本,比如编辑器或者简单的留言回复之类的功能,有的在textarea文本框的有默认的提示语言. ...

  5. jQuery表单验证气泡提示插件

    下载地址 表单验证jQuery插件提示用验证元素右侧气泡的形式,很容易使用和灵活的结构也很实用. dd:

  6. [Ajax] jQuery中的Ajax -- 03-搜索框提示效果

    案例 搜索框提示效果 平常说异步交互的时候,大多数想到的是三级联动,但是根据百度搜索框的样式发现,搜索框提示也是异步交互 代码下载地址 从效果中可以看出 在不输入内容的情况下不显示 输入有内容显示内容 ...

  7. JQuery实现超链接鼠标提示效果的方法

    实现超链接鼠标的提示效果 <html> <head> <meta http-equiv="Content-Type" content="te ...

  8. 终于完成需求模块开发了,jQuery实现的效果,PHP操作数据库

    看看效果,部分代码在下面 分割线----- php代码 : 切换需求的PHP链接并操作数据库 : 前端删除按钮的代码,配合jquery ,提示框用了layerUI的插件,很棒的库:

  9. jQuery 学习笔记之九 (jQuery 图片提示 )

    案例研究 网站的超链接和图片提示1.超级链接提示效果浏览器已经自带了超级链接提示,只需要在超链接中加入title属性就可以了.HTML 代码如下:<a href="#" ti ...

最新文章

  1. 浮点转字符串性能比较
  2. php 文件上传系统,php需登录文件上传管理系统
  3. 总有人愿意为了你多做一些
  4. vim--之初学轻松几步走
  5. 小程序开发-利用canvas实现保存二维码海报到本机
  6. linux 4.1.16 ftrace 进程调度,Linux内核进程调度overview(1)
  7. 《图解HTTP》54~72Page 返回的HTTP状态码 与HTTP协作的Web服务器
  8. C/C++正则表达式匹配数字范围/小数点后几位
  9. R语言ggplot2绘图
  10. 百词斩 计算机英语词汇表,单词之美四级-英语词汇百词斩拓海有道金山词霸典...
  11. PDF Expert教程之批注功能详解
  12. numpy中如何判断一个值是否为masked
  13. 河南计算机会考必背知识点,2017年河南物理高中会考知识点大全
  14. 大数据平台架构实战(二)IntelliJ IDEA搭建hadoop
  15. Android第三方开发包值高德地图SDK使用介绍,android面试基础
  16. 漫谈微信开放平台一(小程序服务器url设置)
  17. inet_addr,inet_pton,inet_aton 用法
  18. 控制面板卸载不了程序,教您如何处理控制面板中卸载不掉的软件
  19. 核磁共振分析处理软件:Nucleomatica iNMR for Mac
  20. Steven-Java-运算符号(简单)

热门文章

  1. 【更新】Navicat Monitor v1.7的新功能说明
  2. java汉字转拼音的处理
  3. VO、DTO、DO、PO的概念
  4. VS2005的类设计器(Class Designer)中,如果显示让类继承接口,而不是实现接口?
  5. Android之AlterDialog介绍
  6. gitlab部署、配置更改、备份及恢复
  7. 服务器网卡的Teaming技术
  8. 4种常用压缩格式在hadoop中的应用
  9. Ext JS 4倒计时:开发者预览版
  10. ASP.NET状态管理之五(Cookie)