`
vearn
  • 浏览: 58861 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

BeautyTips异步获取tooltip内容

阅读更多

话说上个月客户提出需求,希望输入铃音编号时能够即时返回该编号对应的详细信息。顺带要求两条:一是页面无刷新、二是要显示在气球提示框里。接到case之后,本着能不改就不改、能少改就少改的原则,跟人家解释说:首先,这个tooltip(甲方:说中文。偶:就是您提到的气球提示框)一般来说是光标悬停在某个控件上才会显示的;其次,每次按键都会发送新的请求,会对服务器造成很大压力滴。。。

 

挂上电话,我在google中敲入关键字jquery tootip,耳边回荡着你的声音——“需求不变,周五之前完成”,按下回车:恩,jquery的插件果然怒多,试了几个,果然不出我之所料,只支持mousehover事件,而且可配置性不高。最后,我找到了BeautyTips(以下简称bt)。

 

根据BeautyTips项目主页 上的介绍:该插件高度可配置,并能被多种事件所触发。在线Demo 很有诚意,22个例子外加源码和讲解,基本涵盖了所有的功能。

 

回到本文的主题,对实际项目进行抽象后,我写了一个小demo,与官方demo 12 中的异步获取静态页面不同,我这里接收server生成的动态页面。

 

IDE我用的是netbeans 6.7,对jquery(应该说是所有的js类库)的支持相当好。将附件中的beautytips_demo.zip 解压后,netbeans打开该项目,按F6键运行,在“铃音编号”中随便输入点东西,弹出提示框,如图:


除了页面中引入的js文件外,项目中就两个jsp而已。一个index.jsp就是前台页面啦,再一个data.jsp生成并提供前台异步获取所需的动态内容。我们先来看index.jsp的核心部分:

$(document).ready(function () {
    jQuery.bt.defaults.ajaxCache = false;
    $("#ringindex").bt({
        ajaxPath: "${pageContext.request.contextPath}/data.jsp",
        trigger: ["keypress", "blur"],
        spikeLength: 40,
        spikeGirth: 40,
        cornerRadius: 40,
        fill: "rgba(0, 0, 0, .8)",
        strokeWidth: 3,
        strokeStyle: "#CC0",
        cssStyles: {color: "#FFF", fontWeight: "bold"}
    })
 });
  • 第2行的jQuery.bt.defaults.ajaxCache是一个预设的全局变量,默认值是true,在这里为了避免ajax请求同一个url时从缓存中取值,我们把它置为false。从这一点可以看出bt作者还是很体贴的,有了这个参数我们就不用在url后面挂上一堆随机数了。需要指出的是,像ajaxCache这样全局变量的详细列表,都可以在jquery.bt.js(不要去看无注释压缩版的jquery.bt.min.js阿)文件的结尾部分查到。
  • 第4行的ajaxPath所对应的data.jsp就是我们之前提到的数据源。
  • 第5行的trigger表示keypress事件使tooltip显示,blur事件使其隐藏。
  • 第6-12行定义tooltip的外观,从官方demo 6抄过来的。

下面我们来看看data.jsp的源码:

<%
            Object[][] data = new Object [][] {
                { "630565", "相识非偶然", "谭咏麟", 200 },
                { "630566", "上街", "蔡依林", 200 },
                { "630567", "芥末不辣", "江美琪", 200 },
                { "630568", "没道理", "刘若英", 200 },
                { "630569", "一生所爱", "徐小凤", 200 },
                { "630571", "风的季节", "黎瑞恩", 200 },
                { "630572", "风中有朵雨做的云", "孟庭苇", 200 },
                { "630573", "秋天以后的故事", "侯湘婷", 200 },
                { "630575", "带我去寻找", "王啸坤", 200 },
                { "630576", "齐齐唱首歌", "许冠杰", 200 },
                { "630578", "明天话今天", "叶丽仪", 200 },
                { "630579", "迫我绝情", "张学友", 200 },
                { "630580", "走不掉", "张学友", 200 },
                { "630581", "旧情绵绵", "张学友", 200 },
                { "630582", "珍重", "谭咏麟", 200 },
                { "630583", "天使之恋", "黄莺莺", 200 },
                { "630585", "瞬间移动", "方力申", 200 },
                { "630586", "抵抗夜寒", "张学友", 200 },
                { "630587", "不像个大人", "张惠妹", 200 },
                { "630588", "解药", "陈奕迅", 200 }
            };
            java.util.Random random = new java.util.Random();
            int index = random.nextInt(data.length);
            StringBuffer result = new StringBuffer("<div id=\"content\">");
            result.append("<h4>铃音编号:");
            result.append(data[index][0]);
            result.append("</h4><hr/><ul><li>铃音: ");
            result.append(data[index][1]);
            result.append("</li><li>歌手: ");
            result.append(data[index][2]);
            result.append("</li><li>价格: ");
            result.append(data[index][3]);
            result.append("</li></ul>");
            result.append("</div>");
            response.reset();
            response.setContentType("text/html;charset=UTF-8");
            response.setHeader("Cache-Control", "no-cache");
            response.getWriter().write(result.toString());
%>
 

赫赫,大家都看出来了,我这个数据源完全是糊弄事儿,根本就无视来自客户端的输入,先定义了一堆Object二维数组,然后随机取一个向量中的各个字段,拼出一个div来写响应,这个div就是tooltip中要显示的内容,既包含了数据、也有结构、还有样式。根据bt作者的说法,严格的讲,这里使用的技术不是AJAX,而是AHAH(Asynchronous HTML and HTTP )。也有用户给作者留言,要求提供AJAX方式以方便使用handler,但被婉拒。

 

 

 

  • 大小: 14.8 KB
分享到:
评论

相关推荐

    25个优雅的jQuery Tooltip插件推荐

    12. **jQuery Ajax Tooltip**:通过Ajax获取内容的Tooltip,可以在不刷新页面的情况下提供实时信息。 13. **Shiny Tooltips**:顾名思义,它的设计目的是使Tooltip看起来更加光鲜亮丽,增加了页面的吸引力。 14. *...

    20款非常优秀的 jQuery 工具提示插件 推荐

    1. Dynamic tooltip:此插件允许创建动态更新的工具提示,适应变化的内容或数据。 2. jGrowl:除了基本的工具提示功能,jGrowl还提供通知和警告的弹出框,具有可定制的样式和动画效果。 3. jQuery Horizontal ...

    航空公司客户满意度数据转换与预测分析Power BI案例研究

    内容概要:本文档介绍了航空公司的业务分析案例研究,涵盖两个主要部分:a) 使用SSIS进行数据转换,b) 利用RapidMiner进行预测分析。这两个任务旨在通过改善客户满意度来优化业务运营。数据来源包括多个CSV文件,如flight_1.csv、flight_2.csv、type.csv、customer.csv 和 address.csv。第一部分要求学生创建事实表、客户维度表和时间维度表,并描述整个数据转换流程。第二部分则需要利用RapidMiner开发两种不同的模型(如决策树和逻辑回归)来预测客户满意度,并完成详细的报告,其中包括执行摘要、预测分析过程、重要变量解释、分类结果、改进建议和伦理问题讨论。 适合人群:适用于对数据科学和商业分析有一定基础的学生或专业人士。 使用场景及目标:本案例研究用于教学和评估,帮助学员掌握数据转换和预测建模的技术方法,提高客户满意度和业务绩效。目标是通过实际操作加深对相关工具和技术的理解,并能够将其应用于实际业务中。 其他说明:此作业占总评的40%,截止时间为2024年10月25日16:00。

    课题设计-基于MATLAB平台的图像去雾处理+项目源码+文档说明+课题介绍+GUI界面

    一、课题介绍 现在我国尤其是北方城市,工业发达,废弃排放严重,这使得雾霾越来越厉害,让能见度极低。这严重影响了我们的交通系统,导航系统,卫星定位系统等,给人民出行,工作带来极大的不便利。目前市场上高清拍摄设备虽然可以让成像清晰点,但是造价高昂。如果有一套软件处理系统,可以实时地处理含雾的图像,让成像去雾化,让图像变得清晰,将会很受欢迎。 该课题是基于MATLAB平台的图像去雾处理,配备一个人机交互GUI界面,可以选择全局直方图均衡化,Retinex算法,同态滤波,通过对比处理前后的图像的直方图,而直方图是一副图像各灰度值在0-256的分布个数的表,信息论已经整明,具有均匀分布直方图的图像,其信息量是最大的。 二、算法介绍 ①全局直方图均衡化:通俗地理解就是,不管三七二十一,直接强行对彩色图像的R,G,B三通道颜色进行histeq均衡处理,然后进行三通道重组; ②Retinex算法:通俗地讲就是,分离R,G,B三通道,对每个通道进行卷积滤波。

    微信支付V2版本的支付接口,java的SDK

    微信支付V2版本的支付接口,java的SDK

    ide-eval-resetter-2.1.14 无限试用插件

    一款IDEA好用的插件,适用于旗舰版,可以延长试用期限,你懂的!

    电力系统继电保护整定及其应用-发电机组与变压器保护

    内容概要:本文详细介绍了发电机组保护整定方法,讨论了发电机可能遇到的故障状态及相应的保护措施,包括定子绕组故障、转子绕组故障、过电流、过电压等情况,并提供了具体的保护配置。接着,对变压器常见故障进行了分类说明,并给出变压器的主保护和后备保护配置方案。文章进一步计算了不同短路点的短路电流,阐述了互感器的选择标准,并举例解释了纵联保护的应用和后备保护的作用。 适合人群:电力系统工程师、继电保护技术人员及相关研究领域的学者。 使用场景及目标:适用于发电厂和变电站的设计、维护和运行人员,旨在提高电力系统的安全性和稳定性。目标是确保电力系统关键设备的安全运行,防止故障的发生,减少事故造成的损失。 其他说明:本文不仅提供了详细的理论分析,还包括了大量的数据计算和实例说明,有助于读者更好地理解和掌握继电保护的相关知识和技术。

    基于C++开发的微商系统项目源码.zip

    基于C++开发的微商系统项目源码 使用技术:C++/Qt、Mysql、TCP/IP 软件架构 三个大端:服务端、客户端(买家端)、业务端(卖家端) PS:需要连Mysql数据库才能正常使用,连接mysql时记得把用户、密码啥的改为自己的数据库信息

    1503ANDH1503002016_20241116222825

    1503ANDH1503002016_20241116222825

    数理逻辑近世代数复习资料,思维导图部分

    数理逻辑近世代数复习资料,思维导图部分

    京东中台业务架构敏捷性方法 MotriDSP 落地实践.pdf

    京东中台业务架构敏捷性方法 MotriDSP 落地实践.pdf

    毕业设计&课设_电影推荐系统项目:Spring Boot 开发,含多种技术,有前端地址,提供开发及部署说明.zip

    该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

    CCF会员复习资料(1).zip

    CCF会员复习资料(1).zip

    C#ASP.NET养老院老人信息管理系统源码数据库 SQL2008源码类型 WebForm

    ASP.NET养老院老人信息管理系统源码 这是一款非常优秀的养老院老人信息管理系统。程序功能齐全,可选择性强。 管理员后台: 1、人员信息管理:老人信息管理、管理员信息管理、员工信息管理 2、公寓信息管理:添加公寓楼信息、管理公寓楼信息、添加公寓信息、管理公寓信息 3、公寓安排管理:添加公寓安排、公寓安排管理、缴费管理 4、健康管理信息管理:添加健康管理信息、管理健康管理信息 5、紧急联络人管理 6、意见信息管理 7、公告信息管理:添加公告信息、管理公告信息 8、出入信息管理:请假信息管理、访客记录管理、退住情况 员工后台: 1、人员信息管理:老人信息管理 2、健康管理信息管理:管理健康管理信息 3、紧急联络人管理 4、意见信息管理 5、公告信息管理:管理公告信息 6、出入信息管理:请假信息管理、访客记录管理、退住情况 老人后台: 1、修改个人信息 2、修改登陆密码 3、意见信息管理:发布意见信息、意见信息管理 4、查看公告信息

    走向现代化数据分析架构:趋势与挑战.pdf

    走向现代化数据分析架构:趋势与挑战.pdf

    PHP通用权限管理系统源码数据库 MySQL源码类型 WebForm

    PHP通用权限管理系统源码 安装说明: 1.把管理系统.sql 导入到MYSQL数据库中,把App/Common/Conf/db.php中的数据库名称,账号密码改成自己的。 2.把程序放在二级目录下,如:http://localhost/xcrm/ 账号 admin 密码admin123 3.请使用IE8以上,或是谷歌浏览器。 4.支持环境php+apache,php版本要大于5.3 注意:删除App下面 Runtime 文件夹;如果Linux服务器,需要分配777权限; 修改config.php数据库连接地址:绝对路径 大家在安装的时候遇到问题 1.页面顶部出现空白一行 解决办法:db.php 要以uft8无BOM格式编码 保存 notepad++ 编辑器里 格式 下 2.乱码问题 解决办法:数据库建表的时候选 uft8-general-ci 编码格式 然后点开 SQL 把1,SQL复制进去,执行就可以了 3、如果程序执行时报错? 解决办法:保存PHP>5.3版本 删除App下面 Runtime 文件夹 使用须知:注释:权限管理,修改完用户所属组之后,

    各省电商指数数据(1990-2022).xlsx

    详细介绍及样例数据:https://blog.csdn.net/m0_65541699/article/details/143823092

    会议席卡制作模版,电子表格,方便实用

    席卡制作模版会议较多的单位,经常要打印席卡,本模版可以解决燃眉之急

    从 0 到 1 构建集群服务质量运营体系降低云成本.pdf

    从 0 到 1 构建集群服务质量运营体系降低云成本.pdf

Global site tag (gtag.js) - Google Analytics