当前位置: > > > tippy.js - 好用的tooltip提示插件使用详解4(显示html内容、AJAX获取数据)

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,效果图

  • 提示标签出现时首先显示“正在加载....”字样,同时在后台发起请求。
  • 当数据请求成功后,会将返回的结果显示在提示标签中。
评论0