Измените, где 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 знать и читать целевой элемент. Однако вы также можете изменить сигнатуру функции, но я не советую вам делать это, в основном, вы будете делать ваш код трудно поддерживать.