首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用默认按钮关闭tippyjs的工具提示

如何使用默认按钮关闭tippyjs的工具提示
EN

Stack Overflow用户
提问于 2019-01-15 05:54:26
回答 2查看 4.1K关注 0票数 3

我想为每一个tooltip设置关闭按钮,我怎么能拥有它呢?

注意:我不想搞砸设计,这就是为什么我在这里找的最好的解决方案没有尝试太多。

下面是演示:

代码语言:javascript
复制
tippy('#t1,#t2,#t3,#t4',{
        content: "Error Message",
        delay: 100,
        arrow: true,
        arrowType: 'round',
        size: 'large',
        duration: 500,
        animation: 'scale',
        trigger:'manual',
        placement:'bottom',
        hideOnClick:false,
 });

var settings = [{id:"#t1",pos:"top"},{id:"#t2",pos:"bottom"}, 
                {id:"#t3",pos:"left"},{id:"#t4",pos:"right"}];

settings.forEach(function(sett){
    var tip = document.querySelector(sett.id);
    tippy(tip);
    tip._tippy.set({content:"click x",placement:sett.pos});
   tip._tippy.show();
});
代码语言:javascript
复制
div.tippy-dummy{
    position: relative;
    width: 220px;
    height: 30px;
    background: #333;
    color: #fff;
}

div.tippy-dummy span{
    position: absolute;
    display: inline-block;
    background: #715a5a;
    right: 0;
    top: 0;
}

.tooltip{
      display:flex;
      justify-content:space-between;
      width: 90%;
}
.btn{
	  width: 90px;
      height: 30px;
	  border: 2px solid #ccc;
	  border-radius: 6px;
}
.btn:hover{
  	 cursor: pointer;
	 background:#f05a27;
}    
.tooltip{
     margin-top:80px;
}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/tippy.js/3.1.3/tippy.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tippy.js/3.1.3/tippy.min.js"></script>
<h4>Expected output:</h4>
<div class="tippy-dummy">
   Please click X to hide
   <span>X</span>
</div>


<hr/>


<div class="tooltip">
    	<button id="t1" class="btn tippy" title="">top</button>
    	<button id="t2" class="btn tippy" title="">bottom</button>
    	<button id="t3" class="btn tippy" title="">Left</button>
    	<button id="t4" class="btn tippy" title="">Right</button>
    </div>

为了获得更好的视图,的代码是: https://codepen.io/anon/pen/aPXKZM

请提前帮我谢谢!

EN

回答 2

Stack Overflow用户

发布于 2020-05-26 14:16:18

其实比吉福德·N的答案更容易.

代码语言:javascript
复制
<button data-tippy-content="&lt;span class=&quot;closeme&quot;&gt;&amp;times;&lt;/span&gt;There are many like it but this one is mine!!!!!">
  This is my button
</button>
代码语言:javascript
复制
const tippyInstance = tippy('[data-tippy-content]', {
  allowHTML: true,
  interactive: true,
  onShow(instance) {
    instance.popper.querySelector('.closeme').addEventListener('click', () => {
      instance.hide();
    });
  },
  onHide(instance) {
    instance.popper.querySelector('.closeme').removeEventListener('click', () => {
      instance.hide();
    });
  },
});
票数 6
EN

Stack Overflow用户

发布于 2019-12-15 02:38:25

您要寻找的操作是.hide()

要使用此操作,您必须对代码进行一些调整:

  1. interactive: true添加到tippy设置。
代码语言:javascript
复制
tippy('#t1,#t2,#t3,#t4',{
   ...
   interactive: true,
   ...
});`
  1. .hide();操作分配给settings.forEach函数中的popper属性:
代码语言:javascript
复制
settings.forEach(function(sett){
  ...
  tip._tippy.popper.onclick = function() {
    tip._tippy.hide();
  }
});

~

提示:

如果您想在单击popper中的特定元素(例如,X)时隐藏弹出程序,只需多加一点标记即可:

  1. 向所需的元素<button class=\"hide\">X</button>添加一些标记
  2. 使用onclick中的元素:
代码语言:javascript
复制
settings.forEach(function(sett){
  ...
var closeBtn = tip._tippy.popper.getElementsByClassName('hide')[0];
closeBtn.onclick = function() {
  tip._tippy.hide();
}

更新代码:https://codepen.io/gnowland/pen/wvBzjym?editors=0010

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54193394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档