Как закрыть Bootstrap Popovers (или какой -либо элемент в целом), когда пользователь щелкает от него?
-
25-10-2019 - |
Вопрос
Я использую объект Popover из библиотеки начальной загрузки Twitter в ручном режиме, и мне было интересно, как мне следует закрыть подсказку, когда пользователь отдает от него.
Вот мой HTML:
<a id="stats-bar" rel="popover" data-placement="top" data-trigger="manual" data-title="Title here" data-content="Hello everyone.">Test</a>
И мой JavaScript:
$('#stats-bar').click(function(e) {
$(this).popover('show');
});
Как я могу скрыть Попвер, когда пользователь нажимает в любом месте, кроме самого Попора? Я подумал об использовании фиксированного прозрачного Div за Popover и установить его событие Click, но я не уверен, что это лучший способ.
Решение 2
Я решил использовать фиксированный прозрачный Div за Popover и установить его событие Click, так как это кажется самым надежным и простым решением.
Другие советы
Я закончил тем, что подключился к событию документа и скрываю любые моменты инструментов на этой точке
$(document).click(function (e)
{
// check the parents to see if we are inside of a tool tip. If the click came
// from outside the tooltip, then hide our tooltip
if ($(e.target).parents('.tooltip').length == 0) $('[data-original-title]').tooltip('hide');
});
Если вы используете вариант ручного триггера и подключите к событию Click, чтобы отобразить подсказку инструментов, вам нужно будет позвонить в E.StoPPropagation (), чтобы предотвратить сжигание документа при выявлении при подсказке.
А как насчет общего прослушивателя событий, который запускает, куда бы вы ни щелкнули в теле? Проверьте этот пост, он выглядит похоже на то, что вы пытаетесь достичь.
https://stackoverflow.com/a/2125122/1013422
Вы бы использовали это, чтобы закрыть фактический поп -
$('#stats-bar').popover('hide')
Я бы определил функцию только после того, как всплывающее событие запускается, а затем удалил ее после того, как вы закрыли всплывающее окно, таким образом вы не будете постоянно прислушиваться к событиям клика.