Bootstrap popover manual close требует двух щелчков мыши для повторного открытия [дубликат]

этот вопрос уже есть ответ здесь:

У меня есть Bootstrap popover, который содержит элемент с JS, который при нажатии закрывает popover с помощью ручного метода, как показано на веб-сайте Bootstrap, т. е.

$('#element').popover('hide')

однако затем требуется два клика по элементу, из которого открывается всплывающее окно, чтобы снова открыть его. Как будто он все еще думает, что popover на шоу, и поэтому первый щелчок должен переключить его закрытым, а второй щелчок затем снова переключает его. Кто-нибудь знает, как правильно закрыть popover с помощью JS, чтобы избежать этого? Я создал следующую скрипку, которая демонстрирует проблему.

http://jsfiddle.net/fxqzn4xd/1/

спасибо очень сильно.

Update: эта проблема не является дубликатом предлагаемого вопроса

спасибо, как всегда, сообществу SO за поддержание места в чистоте и актуальности. Однако это не дубликат предлагаемого вопроса. Проблема в том, что popovers не были инициализированы до первый щелчок. Поэтому первый клик не открывал popover, но инициализировал его так, чтобы второй и все последующие клики работал.

это не проблема, которую я нашел. Popovers инициализируются при загрузке страницы, поэтому мой первый щелчок тут откройте popover. При закрытии с помощью руководства .метод popover ('hide'), второй щелчок затем не работает. т. е. каждый клик работает в моем случае. Это разные проблемы, вызванные разными проблемами. Проблема в связанном сообщении заключается в инициализации всплывающих окон до первого щелчка, что я уже делаю.

Я сообщил о проблеме, я нашел в проекте twbs bootstrap на GitHub и оказывается, что это известная ошибка, впервые сообщенная в версии 3.3.5 еще в июле. У него было веховое исправление 3.3.6, но это поскользнулось (3.3.6 вышел недавно) и теперь имеет веху 3.3.7. Полная информация о Github здесь:

призвание .popover ('скрыть') предотвращает popover от открытия на следующий клик #18860

хорошие новости, однако, есть простой обходной путь, который может быть применен во время ожидания его фиксации 3.3.7. Я опубликую это как решение.

обновление 2 Согласовано: это дубликат нового предлагаемого "дубликата" вопроса. Похоже, что asker столкнулся с проблемой прямо передо мной! Я оставлю вопрос здесь, хотя ясно, что я (и другие) не нашел этого во время поиска, поэтому надеюсь, что это может помочь.

3 ответов


спасибо перейдите к пользователю GitHub "julesongithub" за предоставление этого обходного пути. Поместите это на ту же страницу, что и popover, который вы хотите закрыть.popover ("скрыть") решает проблему. По сути он работает, сбрасывая установить.нажмите " переменная для popover, который не делает метод hide.

$('body').on('hidden.bs.popover', function (e) {
    $(e.target).data("bs.popover").inState.click = false;
});

обходной путь, который я использую, - это функция click () для элемента, который запускает popover, из-за следующего обоснования: вы просто хотите "скрыть" popover, когда он отображается, и элемент для отображения popover также является элементом для его скрытия. При этом click () заставит его исчезнуть. Вместо

$('#element').popover('hide')

Я использую

$('#element').click()

он работает хорошо до сих пор...


я исправил это, изменив параметр триггера при создании экземпляра popover.

$('#element').popover({ trigger: 'manual' });

обратите внимание, что этот параметр требует, чтобы вы оба показывали и скрыть popover.

Источник Потока

Дополнительные параметры popover