消灭A Div中的所有Bootstrap工具提示

时间:2015-01-29 17:11:49

标签: javascript jquery twitter-bootstrap twitter-bootstrap-tooltip

我有一个$("#settings") div,多个引导工具提示附加到子元素。

例如,

<div id="settings" style="display: flex;">
  <tbody>
    <tr>
      <td width="25%" class="left Special" style="font-size:150%">Content:</td>
      <td width="5%"></td>
      <td width="70%" class="Special settingswrong" style="font-size:200%"><div style="display:inline" data-toggle="tooltip" data-placement="right" title="" data-original-title="This is not what you are looking for!">Content</div></td>
    </tr>
    <tr>
      <td width="25%" class="left Special" style="font-size:150%">Content:</td>
      <td width="5%"></td>
      <td width="70%" class="Special settingswrong" style="font-size:200%"><div style="display:inline" data-toggle="tooltip" data-placement="right" title="" data-original-title="This is not what you are looking for!">Content</div></td>
    </tr>
  </tbody>
</div>

我希望$("#settings").tooltip('destroy')在按下按钮时摆脱所有这些工具提示,但它不起作用,我假设因为工具提示不是实际上设置div,但在里面。

但是我也尝试了$('#settings').find('*').tooltip('destroy'),但也没有用。

是因为我正在初始化它们吗?

$(document).ready(function() {
    $("body").tooltip({ selector: '[data-toggle=tooltip]' });
});

访问div中所有工具提示的快速简便方法是什么?

5 个答案:

答案 0 :(得分:36)

您使用元素容器(正文)通过委派fiddle)初始化了具有data-toggle="tooltip"属性的所有元素:

$("body").tooltip({ selector: '[data-toggle=tooltip]' });

所以为了使用destroy来禁用它,你需要在身体上执行它:

$('body').tooltip('dispose');

如果你想没有授权,你可以初始化每个元素(fiddle):

 $('[data-toggle="tooltip"]').tooltip();

并销毁它:

$('[data-toggle="tooltip"]').tooltip('dispose'); // used in v4
$('[data-toggle="tooltip"]').tooltip('destroy'); // used in v3 and older

如果您仍想初始化委派并使用停用fiddle)停止工作:

$('body').tooltip({ selector: '[data-toggle=tooltip]' });
$('body [data-toggle="tooltip"]').tooltip('disable');

解释从Jasny's answer获取的销毁和禁用之间的区别:

$('[rel=tooltip]').tooltip()          // Init tooltips
$('[rel=tooltip]').tooltip('disable') // Disable tooltips
$('[rel=tooltip]').tooltip('enable')  // (Re-)enable tooltips
$('[rel=tooltip]').tooltip('dispose') // Hide and destroy tooltips

这是我在Bootstraps github 中得到的答案 - 由于您正在使用委托(即选择器选项),我相信只有一个实际的工具提示实例(在身体上)。因此,尝试在触发元素本身上销毁不存在的工具提示实例没有任何效果。 比较未委托的版本:http://jsfiddle.net/zsb9h3g5/1/

答案 1 :(得分:8)

从bootstrap版本4开始,根据文档,您应该使用dispose,因为destroy已不再定义。示例如下:

$('#element').tooltip('dispose')

答案 2 :(得分:5)

所选答案会破坏工具提示,以便它们完全消失并且其功能已被禁用。

如果您只想在保持其功能的同时立即删除所有工具提示,请使用RefreshRow(rowHandle)

答案 3 :(得分:0)

要仅销毁#settings内的工具提示,请执行以下操作:

$('#settings [data-toggle="tooltip"]').tooltip('destroy');

答案 4 :(得分:0)

我在Bootstrap 3中遇到一种情况,在放在BS按钮上方,以利用OS下拉菜单而不是传统的BS下拉菜单。由于覆盖,该按钮未悬停,因此工具提示已添加到不可见的会保持焦点,以防止工具提示在重复的悬停上触发