Подтвердить что ты не робот

Уничтожьте все подсказки Bootstrap в Div

У меня есть div $("#settings") с несколькими подсказками для начальной загрузки, прикрепленными к дочерним элементам.

Например,

<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?

4b9b3361

Ответ 1

Вы инициализировали все элементы, у которых есть атрибут data-toggle="tooltip", используя контейнер элементов (тело) через делегирование (fiddle):

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

поэтому, чтобы отключить его, используя destroy, вам нужно сделать это на теле:

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

Если вы хотите сделать это без делегирования, вы можете инициализировать каждый из элементов (fiddle):

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

и уничтожить его:

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

Если вы все еще хотите инициализировать прокси-сервер делегирование и не запускать его с помощью отключить (fiddle):

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

Объяснение о различии между уничтожением и отключением, взятым из Jasny answer:

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

Это ответ, который я получил в Bootstraps github. Поскольку вы используете делегирование (т.е. selector), я считаю, что существует только один фактический экземпляр всплывающей подсказки (на теле). Таким образом, попытка уничтожения несуществующих экземпляров всплывающих подсказок на самих элементах триггера не влияет. Сравните версию без делегирования: http://jsfiddle.net/zsb9h3g5/1/

Ответ 2

Как и в случае с загрузкой версии 4 и в соответствии с документацией, вы должны использовать dispose, поскольку destroy больше не определен. Пример приведен ниже:

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

Ответ 3

Выбранный ответ уничтожает всплывающие подсказки, чтобы они полностью исчезли, и их функциональность отключена.

Если вы просто хотите сразу избавиться от всех всплывающих подсказок при сохранении их функциональности, используйте $('.tooltip').remove();.

Ответ 4

Чтобы уничтожить всплывающие подсказки внутри #settings, сделайте следующее:

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