在 javascript 或 bootstrap 中创建可点击的工具提示

Posted

技术标签:

【中文标题】在 javascript 或 bootstrap 中创建可点击的工具提示【英文标题】:Creating a clickable tooltip in javascript or bootstrap 【发布时间】:2016-01-05 03:52:08 【问题描述】:

制作如下图所示的可点击工具提示的最佳方法是什么:

我应该使用引导程序还是其他一些库?

谢谢。

【问题讨论】:

bootstrap 很酷:getbootstrap.com/javascript/#tooltips bootstrap 的弹窗效果更好:getbootstrap.com/javascript/#popovers 你能扩展你期望小部件做什么吗? 我希望在 Postsecondary div 上有一个悬停事件或单击事件,然后出现蓝色弹出框/工具提示。然后学生或教师也可以点击。最后,如果您不将鼠标悬停在蓝色部分上,它就会消失。 【参考方案1】:

给你

$("#Pops").popover(
html: true,
content: function () 
    return $('#popover-content').html();

);
[data-style=mypops] + .popover 
background: #4194ca;

[data-style=mypops] + .popover.bottom .arrow:after 
border-bottom-color: #4194ca;

[data-style=mypops] + .popover-content 

.popovermenu 
list-style: none;
padding: 0px;
margin: 0px;

.popovermenu li 

.popovermenu li a 
color: #fff;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" />
<div class="col-sm-4">
    <button tabindex="0" class="btn btn-default" role="button" data-toggle="popover" data-trigger="focus" data-placement="bottom" data-style="mypops" id="Pops">Click Me</button>
    <div id="popover-content" class="hide">
      <ul class="popovermenu">
        <li><a href="#">Action</a></li>
        <li><a href="#">Another action</a></li>
        <li><a href="#">Separated link</a></li>
      </ul>
    </div>
</div>

编辑:

在弹出框按钮中添加了自定义 data-style="mypops" 并添加了 css,因此可以自定义弹出框而不影响引导程序中的默认弹出框。 在弹出框按钮中将data-trigger="click" 替换为data-trigger="focus",因此如果单击一个链接或在弹出框窗口之外,弹出框将自动关闭。

Fiddle

【讨论】:

如何让样式看起来像这样?我的副本只显示列表 如果您使用答案中的相同代码,除非您对其进行任何更改或者您没有使用引导框架,否则应该不会有问题,您可以提供快照吗?【参考方案2】:

$('[data-toggle="popover"]').popover( trigger: "manual" , html: true, animation:false)
    .on("mouseenter", function () 
        var _this = this;
        $(this).popover("show");
        $(".popover").on("mouseleave", function () 
            $(_this).popover('hide');
        );
    ).on("mouseleave", function () 
        var _this = this;
        setTimeout(function () 
            if (!$(".popover:hover").length) 
                $(_this).popover("hide");
            
        , 300);
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
  <h3>Popover Example</h3>
<a href="#" role="button" class="btn popovers" data-toggle="popover" title="" data-content="test content <a href='https://www.w3schools.com' title='test add link'>link on content</a>" data-original-title="test title">test link</a>
</div>
</body>
</html>

【讨论】:

Timer 在 MouseLeave 中做了什么? @geneb 检查指针是否在 300 毫秒后是否在工具提示内,如果不是,我认为工具提示被隐藏 在 mouseenter 事件期间,您创建一个新的事件处理程序。这可能会导致内存泄漏。【参考方案3】:

您可以使用 Bootstrap 的弹出框并使用模板选项在工具提示中包含可点击的链接。还有关于工具提示位置的选项。

$(function ()
    $("#example").popover(
        template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>',
        placement: 'right'
    );  
);

http://getbootstrap.com/javascript/#popovers-options

【讨论】:

以上是关于在 javascript 或 bootstrap 中创建可点击的工具提示的主要内容,如果未能解决你的问题,请参考以下文章

Bootstrap 是 css 还是 javascript 框架或两者兼而有之? [关闭]

Bootstrap javascript需要重新加载或无法运行

bootstrap javascript插件部分的笔记整理

通过单击链接通过 JavaScript 打开 Bootstrap 4 Modal

bootscript/javascript组件

bootscript/javascript组件