Измените, где bootstrap" modal-open " класс назначается вместо тела [закрыт]
в настоящее время
modal-open
присваивается телу при открытии модального. Как изменить, где класс добавляется вместо тела.
Спасибо за любую помощь.
1 ответов
вы должны изменить js, который добавляет modal-open. Это немного странно, как поведение, в любом случае вы можете сделать это мягко или жестоко.
мягко: перехват модального щелчка для показа и удаления класса в тело добавление к другому элементу:
// Modal сначала добавляется в тело, а затем удаляется и добавляется в другой элемент
$('#myModal').on('shown.bs.modal', function (e) {
$(body).removeClass('modal-open');
$('#myCustomElement').addClass('modal-open');
})
а затем перехватить также закрытие модального и добавить выполнение второго удаления:
$('#myModal').on('hidden.bs.modal', function (e) {
$('#myCustomElement').removeClass('modal-open');
})
жестоко метод, чтобы избежать этого модального открытия, его не нужно добавлять в элемент тела: перейти в каталог TwitterBootstrap > js Открыть модальный.Яш Поиск modal-open, вы найдете (на версии 3.2.0):
на
Modal.prototype.show
вы можете найти
this.$body.addClass('modal-open')
на Modal.prototype.hide
вы найдете
this.$body.removeClass('modal-open')
вы должны изменить цель addClass
и removeClass
и замените эти инструкции, если у вас есть фиксированный элемент, это достаточно просто (например:$('#myFixedElement').addClass('modal-open')
, если это динамический элемент это сложно, и вам придется снова перехватить функцию Show, чтобы добавить global var
в js, чтобы позволить modal.js
знать и читать целевой элемент. Однако вы также можете изменить сигнатуру функции, но я не советую вам делать это, в основном, вы будете делать ваш код трудно поддерживать.