Привязать функцию к Twitter Bootstrap Modal Close
Я использую загрузочную библиотеку Twitter в новом проекте, и я хочу, чтобы часть страницы обновилась и получила последние данные json о модальном закрытии. Я не вижу этого нигде в документации может кто-то указать мне на это или предложить решение.
две проблемы с помощью проверенных методов
$('#my-modal').bind('hide', function () {
// do something ...
});
я прикрепляю класс "скрыть" к модальному уже так, что он не отображается на странице загрузки, так что бы загрузить дважды
даже если я удалю скрыть класс и установите идентификатор элемента в display:none и добавить console.log("THE MODAL CLOSED"); функции выше, когда я близко ничего не происходит.
11 ответов:
Bootstrap 3
$('#myModal').on('hidden.bs.modal', function () { // do something… })см.getbootstrap.com/javascript/#modals-events
Bootstrap 2.3.2
$('#myModal').on('hidden', function () { // do something… })см.getbootstrap.com/2.3.2/javascript.html#modals → события
Bootstrap 4
$('#my-modal').on('hidden.bs.modal', function () { window.alert('hidden event fired!'); });см. этот JSFiddle для рабочего примера:
http://jsfiddle.net/aq9Laaew/120440/
см. раздел модальных событий документов здесь:
начиная с Bootstrap 3 (edit: все то же самое в Bootstrap 4) есть 2 случая, в которых вы можете запускать события, будучи:
1. когда модальное событие "скрыть" начинается
$('#myModal').on('hide.bs.modal', function () { console.log('Fired at start of hide event!'); });2. когда модальное событие "скрыть" завершено
$('#myModal').on('hidden.bs.modal', function () { console.log('Fired when hide event has finished!'); });
вместо " live "Вам нужно использовать событие" on", но назначить его объекту документа:
использование:
$(document).on('hidden.bs.modal', '#Control_id', function (event) { // code to run on closing });
Bootstrap обеспечить события, которые вы можете подключить в модальные, например, если вы хотите, чтобы огонь событие когда модальное закончило быть скрытым от пользователя, вы можете использовать hidden.bs.modal событие вот так
/* hidden.bs.modal event example */ $('#myModal').on('hidden.bs.modal', function () { window.alert('hidden event fired!'); })проверить рабочий скрипку здесь узнайте больше о модальных методах и событиях здесь в документация
Я видел много ответов относительно событий bootstrap, таких как
hide.bs.modal, который срабатывает, когда модальные закрыт.есть проблема с этими событиями: любые всплывающие окна в модальном режиме (всплывающие окна, всплывающие подсказки и т. д.) вызовут это событие.
есть еще один способ поймать событие, когда модальный закрывается.
$(document).on('hidden','#modal:not(.in)', function(){} );Bootstrap использует
inкласс, когда модальный открыт. Очень важно использоватьhiddenсобытие начиная с классаinеще определяется, когда событиеhideсрабатывает.это решение не будет работать в IE8, так как IE8 не поддерживает Jquery
:not()селектор.
Я прыгаю в супер поздно здесь, но для людей, использующих Bootstrap модалы с React я использую MutationObserver чтобы обнаружить изменения в видимости модала и соответствующим образом настроить состояние - этот метод может быть применен для запуска любой функции, когда модал закрыт:
//react stuff componentDidMount: function() { var self = this; $(function() { $("#example_modal").addClass('modal'); //use MutationObserver to detect visibility change //reset state if closed if (MutationObserver) { var observer = new MutationObserver(function(mutations) { //use jQuery to detect if element is visible if (!$('#example_modal').is(':visible')) { //reset your state self.setState({ thingone: '', thingtwo: '' }); } }); var target = document.querySelector('#example_modal'); observer.observe(target, { attributes: true }); } }); }для тех, кто интересуется современной поддержкой браузера, CanIUse имеет покрытие MutationObserver в около 87%
надеюсь, что это поможет кому-то :)
спасибо,
Джейк
У меня были те же проблемы, что и у некоторых с
$('#myModal').on('hidden.bs.modal', function () { // do something… })вы должны поместить это в нижней части страницы, поместив его в верхней никогда не запускает событие.
Bootstrap 4:
$('#myModal').on('hidden.bs.modal', function (e) { // call your method })hide.bs. modal: Это событие запускается сразу же после вызова метода экземпляра hide.
hidden.bs. modal: Это событие запускается, когда модальное закончил быть скрыта от пользователя (будет ждать CSS переходы для завершения).
Я бы сделал так:
$('body').on('hidden.bs.modal', '#myModal', function(){ //this call your method });остальное уже было написано другими. Я также рекомендую прочитать документацию:метод jquery-on
Comments