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.