Запускать, когда модальное вставлено в DOM

Я использую модальный компонент анимированного Twitter Bootstrap, и я хотел бы манипулировать его элементами, как только они станут доступны в DOM.

Чтобы уточнить, у меня нет модального ожидания в DOM, я компилирую шаблон Handlebars и вызываю для него .modal(), иначе я мог бы манипулировать им просто, когда DOM будет готов.

Bootstrap предоставляет 2 соответствующих события, show.bs.modal и shown.bs.modal. Первый срабатывает при переключении модального окна, но до его вставки в DOM, а второй срабатывает после завершения отображения модального окна, но это происходит после анимации отображения. завершено, что слишком поздно и вызывает FOUC. Метод .modal() в какой-то момент вставляет модальное окно в DOM, но когда я попытался найти его сразу после вызова этого метода, его там не было.

Я понял, что манипулирование им после 200 мс работает, но оно кажется грязным, и я не уверен, что оно всегда будет работать. Как я могу манипулировать им после вставки модального окна в DOM, но до начала анимации?


person silvenon    schedule 07.10.2014    source источник


Ответы (1)


Насколько я знаю, .modal() не вставляет модальное окно в DOM. Он вставляет .modal-backdrop в DOM, но не само модальное окно.

Похоже, вы должны иметь возможность просто:

  1. Скомпилируйте шаблон
  2. Вставьте полученный модальный HTML в DOM. (По умолчанию модальным будет display: none, так что это безопасно.)
  3. Выполните свои манипуляции с модальными элементами
  4. Звоните .modal()
person cvrebert    schedule 07.10.2014
comment
Такое простое решение, спасибо! Да, .modal() действительно вставляет HTML в DOM, если он не был вставлен раньше, я просто не уверен, когда. - person silvenon; 09.10.2014