jquery - 单击时显示和隐藏工具提示(Tipso.js)

标签 jquery jquery-plugins tooltip

我正在使用名为 Tipso 的简单工具提示插件.
如何仅通过单击来显示和隐藏工具提示?

$('.top').tipso();
/* Tipso Bubble Styles */

.tipso_bubble,
.tipso_bubble>.tipso_arrow {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.tipso_bubble {
  position: absolute;
  text-align: center;
  border-radius: 6px;
  z-index: 9999;
}

.tipso_style {
  cursor: help;
  border-bottom: 1px dotted;
}

.tipso_title {
  border-radius: 6px 6px 0 0;
}

.tipso_content {
  word-wrap: break-word;
  padding: 0.5em;
}


/* Tipso Bubble size classes - Similar to Foundation's syntax*/

.tipso_bubble.tiny {
  font-size: 0.6rem;
}

.tipso_bubble.small {
  font-size: 0.8rem;
}

.tipso_bubble.default {
  font-size: 1rem;
}

.tipso_bubble.large {
  font-size: 1.2rem;
  width: 100%;
}


/* Tipso Bubble Div */

.tipso_bubble>.tipso_arrow {
  position: absolute;
  width: 0;
  height: 0;
  border: 8px solid;
  pointer-events: none;
}

.tipso_bubble.top>.tipso_arrow {
  border-top-color: #000;
  border-right-color: transparent;
  border-left-color: transparent;
  border-bottom-color: transparent;
  top: 100%;
  left: 50%;
  margin-left: -8px;
}

.tipso_bubble.bottom>.tipso_arrow {
  border-bottom-color: #000;
  border-right-color: transparent;
  border-left-color: transparent;
  border-top-color: transparent;
  bottom: 100%;
  left: 50%;
  margin-left: -8px;
}

.tipso_bubble.left>.tipso_arrow {
  border-left-color: #000;
  border-top-color: transparent;
  border-bottom-color: transparent;
  border-right-color: transparent;
  top: 50%;
  left: 100%;
  margin-top: -8px;
}

.tipso_bubble.right>.tipso_arrow {
  border-right-color: #000;
  border-top-color: transparent;
  border-bottom-color: transparent;
  border-left-color: transparent;
  top: 50%;
  right: 100%;
  margin-top: -8px;
}

.tipso_bubble .top_right_corner,
.tipso_bubble.top_right_corner {
  border-bottom-left-radius: 0;
}

.tipso_bubble .bottom_right_corner,
.tipso_bubble.bottom_right_corner {
  border-top-left-radius: 0;
}

.tipso_bubble .top_left_corner,
.tipso_bubble.top_left_corner {
  border-bottom-right-radius: 0;
}

.tipso_bubble .bottom_left_corner,
.tipso_bubble.bottom_left_corner {
  border-top-right-radius: 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://tipso.object505.com/tipso.js"></script>


<div id="banner-message">
  <p>Hello World</p>
  <span class="top tipso_style" data-tipso="This is a tooltip text">I want to show the tooltip on click and hide it on click as well.</span>
</div>

View on jsFiddle

最佳答案

考虑添加一个click处理程序,根据工具提示是否已经显示来显示或隐藏工具提示。 Tipso documentation建议使用一个类来指示工具提示何时显示;请参阅标题为“单击以显示/隐藏提示”的演示。

以下是切换工具提示的单击事件的演示。它还包括用于更新“显示”类的 mouseentermouseleave 处理程序。

$('.top')
  .tipso()
  .on({
    mouseenter: function(e) {
      jQuery(this).addClass('typso-showing');
    },
    mouseleave: function(e) {
      jQuery(this).removeClass('typso-showing');
    },
    click: function(e) {
      let $this = jQuery(this);
      if ($this.hasClass('typso-showing')) {
        $this.removeClass('typso-showing');
        $this.tipso('hide');
      } else {
        $this.addClass('typso-showing');
        $this.tipso('show');
      }
    }
  });
/* Tipso Bubble Styles */

.tipso_bubble,
.tipso_bubble>.tipso_arrow {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.tipso_bubble {
  position: absolute;
  text-align: center;
  border-radius: 6px;
  z-index: 9999;
}

.tipso_style {
  cursor: help;
  border-bottom: 1px dotted;
}

.tipso_title {
  border-radius: 6px 6px 0 0;
}

.tipso_content {
  word-wrap: break-word;
  padding: 0.5em;
}


/* Tipso Bubble size classes - Similar to Foundation's syntax*/

.tipso_bubble.tiny {
  font-size: 0.6rem;
}

.tipso_bubble.small {
  font-size: 0.8rem;
}

.tipso_bubble.default {
  font-size: 1rem;
}

.tipso_bubble.large {
  font-size: 1.2rem;
  width: 100%;
}


/* Tipso Bubble Div */

.tipso_bubble>.tipso_arrow {
  position: absolute;
  width: 0;
  height: 0;
  border: 8px solid;
  pointer-events: none;
}

.tipso_bubble.top>.tipso_arrow {
  border-top-color: #000;
  border-right-color: transparent;
  border-left-color: transparent;
  border-bottom-color: transparent;
  top: 100%;
  left: 50%;
  margin-left: -8px;
}

.tipso_bubble.bottom>.tipso_arrow {
  border-bottom-color: #000;
  border-right-color: transparent;
  border-left-color: transparent;
  border-top-color: transparent;
  bottom: 100%;
  left: 50%;
  margin-left: -8px;
}

.tipso_bubble.left>.tipso_arrow {
  border-left-color: #000;
  border-top-color: transparent;
  border-bottom-color: transparent;
  border-right-color: transparent;
  top: 50%;
  left: 100%;
  margin-top: -8px;
}

.tipso_bubble.right>.tipso_arrow {
  border-right-color: #000;
  border-top-color: transparent;
  border-bottom-color: transparent;
  border-left-color: transparent;
  top: 50%;
  right: 100%;
  margin-top: -8px;
}

.tipso_bubble .top_right_corner,
.tipso_bubble.top_right_corner {
  border-bottom-left-radius: 0;
}

.tipso_bubble .bottom_right_corner,
.tipso_bubble.bottom_right_corner {
  border-top-left-radius: 0;
}

.tipso_bubble .top_left_corner,
.tipso_bubble.top_left_corner {
  border-bottom-right-radius: 0;
}

.tipso_bubble .bottom_left_corner,
.tipso_bubble.bottom_left_corner {
  border-top-right-radius: 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://tipso.object505.com/tipso.js"></script>

<div id="banner-message">
  <p>Hello World</p>
  <span class="top tipso_style" data-tipso="This is a tooltip text">I want to show the tooltip on click and hide it on click as well.</span>
</div>


您似乎想要删除 Tipso 的默认悬停行为,以便工具提示在点击时显示。一种方法是使用 off()删除 Typso 的处理程序,该处理程序似乎用于“mouseover”和“mouseout”事件。然后添加您自己的点击处理程序。

// define all tips
let $tips = $('.top');

// initialize tipso and configure handlers
$tips
  .tipso()
  .off('mouseover mouseout')
  .on('click', function() {

    let $this = $(this);
    let showing = $this.hasClass('typso-showing');

    $this
      .tipso(showing ? 'hide' : 'show')
      .toggleClass('typso-showing', !showing);

  });

// close on click outside
$(document).on('click', function(e) {
  if (!$tips.is(e.target)) {
    $tips.tipso('hide').removeClass('typso-showing');
  }
});
/* Tipso Bubble Styles */

.tipso_bubble,
.tipso_bubble>.tipso_arrow {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.tipso_bubble {
  position: absolute;
  text-align: center;
  border-radius: 6px;
  z-index: 9999;
}

.tipso_style {
  cursor: help;
  border-bottom: 1px dotted;
}

.tipso_title {
  border-radius: 6px 6px 0 0;
}

.tipso_content {
  word-wrap: break-word;
  padding: 0.5em;
}


/* Tipso Bubble size classes - Similar to Foundation's syntax*/

.tipso_bubble.tiny {
  font-size: 0.6rem;
}

.tipso_bubble.small {
  font-size: 0.8rem;
}

.tipso_bubble.default {
  font-size: 1rem;
}

.tipso_bubble.large {
  font-size: 1.2rem;
  width: 100%;
}


/* Tipso Bubble Div */

.tipso_bubble>.tipso_arrow {
  position: absolute;
  width: 0;
  height: 0;
  border: 8px solid;
  pointer-events: none;
}

.tipso_bubble.top>.tipso_arrow {
  border-top-color: #000;
  border-right-color: transparent;
  border-left-color: transparent;
  border-bottom-color: transparent;
  top: 100%;
  left: 50%;
  margin-left: -8px;
}

.tipso_bubble.bottom>.tipso_arrow {
  border-bottom-color: #000;
  border-right-color: transparent;
  border-left-color: transparent;
  border-top-color: transparent;
  bottom: 100%;
  left: 50%;
  margin-left: -8px;
}

.tipso_bubble.left>.tipso_arrow {
  border-left-color: #000;
  border-top-color: transparent;
  border-bottom-color: transparent;
  border-right-color: transparent;
  top: 50%;
  left: 100%;
  margin-top: -8px;
}

.tipso_bubble.right>.tipso_arrow {
  border-right-color: #000;
  border-top-color: transparent;
  border-bottom-color: transparent;
  border-left-color: transparent;
  top: 50%;
  right: 100%;
  margin-top: -8px;
}

.tipso_bubble .top_right_corner,
.tipso_bubble.top_right_corner {
  border-bottom-left-radius: 0;
}

.tipso_bubble .bottom_right_corner,
.tipso_bubble.bottom_right_corner {
  border-top-left-radius: 0;
}

.tipso_bubble .top_left_corner,
.tipso_bubble.top_left_corner {
  border-bottom-right-radius: 0;
}

.tipso_bubble .bottom_left_corner,
.tipso_bubble.bottom_left_corner {
  border-top-right-radius: 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://tipso.object505.com/tipso.js"></script>

<div id="banner-message">
  <p>Hello World</p>
  <span class="top tipso_style" data-tipso="This is a tooltip text">I want to show the tooltip on click and hide it on click as well.</span>
</div>

关于jquery - 单击时显示和隐藏工具提示(Tipso.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61237126/

相关文章:

tree - 向 Dojo 树节点添加工具提示的最简单方法?

hover - jqplot 格式工具提示值

jquery - 如何为 DotNetNuke 使用 Aquantum 多文件 uploader (Jquery 插件)?

jquery - 如何检查 <link rel ="stylesheet"href ="file.css"> 是否成功

javascript - 分组和取消分组 Fabric.js 对象

javascript - 如何在照片库中添加分页?

jquery-plugins - 彩盒调整大小

javascript - Masonry- div 与 imagesLoaded 插件重叠

javascript - ExtJS 5 工具提示位置

javascript - 预输入未显示建议​​列表