【问题标题】:Destroy All Bootstrap Tooltips in A Div销毁 Div 中的所有引导工具提示
【发布时间】:2015-01-29 17:11:49
【问题描述】:

我有一个$("#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 中所有工具提示的快速简便的方法?

【问题讨论】:

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


    【解决方案1】:

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

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

    所以为了使用 destroy 禁用它,您需要在 body 上执行此操作:

    $('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
    

    如果您仍想通过 delegation 初始化槽并使用 disable (fiddle) 阻止它工作:

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

    Jasny's answer获取的关于destroy和disable区别的解释:

    $('[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/

    【讨论】:

    • 奇怪的是“破坏”不起作用......这是他们的文档所说的......谢谢! :)
    【解决方案2】:

    选择的答案会破坏工具提示,因此它们完全消失并且其功能被禁用。

    如果您只是想在保持其功能的同时一次性删除所有工具提示,请使用$('.tooltip').remove();

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        我在 Bootstrap 3 中遇到了一种情况,其中

        最终使用onchange="$('.tooltip').remove()" 删除所有工具提示。这种方法适用于 BS 方法不起作用的地方。希望它可以帮助有类似情况的人?

        注意事项

        我的opacity:0

        我还在 onchange 事件中添加了this.blur()。否则

        【讨论】:

        • 实际上不得不稍微改变一下,因为如果选择了相同的
        【解决方案5】:

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

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

        【讨论】:

        • 尝试使用这个(而不是我的解决方案)并且工具提示不会再次触发?虽然我的情况可能是独一无二的?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多