tippy.js - 好用的tooltip提示插件使用详解4(显示html内容、AJAX获取数据)
十二、显示 html 内容
1,基本用法
(1)在前面文章中,我们 tooltip 里显示的都是普通文字。其实它也是可以支持更复杂的 html 样式内容的:
<button data-tippy="欢迎访问 <strong style='color:orange;'>hangge.com</strong> !">tooltip</button>
(2)效果图如下:

2,添加交互行为
(1)如果需要与 tooltip 里的内容进行交互,比如:点击里面的按钮执行相应的方法。那么就要将 interactive 属性设置为 true:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <link rel="stylesheet"href="tippy.css"> <script src='tippy.all.js'></script> </head> <body style="padding:170px"> <button id="btn1">tooltip</button> </body> <script type="text/javascript"> window.onload=function(){ //显示的html内容 var content = "欢迎访问 <strong style='color: orange;'>hangge.com</strong> !<br>" + "<button onclick='confirm()'>确定</button>"; //tooltip初始化 tippy('#btn1', { content: content, interactive: true }); } //tooltip确定按钮点击 function confirm() { //关闭tooltip标签 var btn = document.getElementById("btn1"); var tip = btn._tippy; tip.hide(); } </script> </html>
(2)效果图如下:
- 提示标签中除了有使用样式的文字外,还添加了个“确定”按钮。
- 当点击“确定”按钮后,自动将提示标签隐藏。

3,使用 html 模板
(1)如果提示标签的 html 内容比较复杂,还通过拼接字符串的方式来设置 content 值的话就会十分烦琐,且难以阅读和维护。
(2)我们可以直接将页面上的元素作为 tooltip 的 content 值(绑定后该元素不会继续在页面上显示),下面代码实现的效果同上面是一样的。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <link rel="stylesheet"href="tippy.css"> <script src='tippy.all.js'></script> </head> <body style="padding:170px"> <button id="btn1">tooltip</button> <div id="myTemplate"> 欢迎访问 <strong style='color: orange;'>hangge.com</strong> ! <br> <button onclick='confirm()'>确定</button> </div> </body> <script type="text/javascript"> window.onload=function(){ //tooltip初始化 tippy('#btn1', { content: document.getElementById("myTemplate"), interactive: true }); } //tooltip确定按钮点击 function confirm() { //关闭tooltip标签 var btn = document.getElementById("btn1"); var tip = btn._tippy; tip.hide(); } </script> </html>
十三、通过 Ajax 获取提示标签数据
有时 tooltip 内容并不是固定写死的,而是需要通过后台请求来动态获取的。下面通过样例演示这个功能如何实现。
1,样例代码
(1)我们在提示标签显示的时候通过 ajax 去获取数据,等获取完毕后将内容设置进来。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <link rel="stylesheet"href="tippy.css"> <script src='tippy.all.js'></script> <script src='js/jquery.js'></script> </head> <body style="padding:170px"> <button id="btn1">tooltip</button> </body> <script type="text/javascript"> window.onload=function(){ //tooltip初始化 tippy('#btn1', { content: "正在加载....", async onShow(tip) { //显示时通过ajax加载tip内容 $.ajax({ url: "tipData.php", success: function(data){ tip.setContent(data); }}); }, onHidden(tip) { tip.setContent("正在加载....") } }); } </script> </html>
(2)tipData.php 代码如下,为了让效果更加明显,我在返回结果前等待个 2 秒钟。
<? sleep(2); echo "欢迎访问 hangge.com"; ?>
2,效果图
- 提示标签出现时首先显示“正在加载....”字样,同时在后台发起请求。
- 当数据请求成功后,会将返回的结果显示在提示标签中。
