2014-10-07 2 views
1

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

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

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

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

ответ

1

AFAIK, .modal() не вставляет модальный в DOM. Он вставляет .modal-backdrop в DOM, но не сам модальный.

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

  1. Компиляция шаблону
  2. Вставьте полученный модальный HTML в DOM. (Модальный будет display: none по умолчанию, так что это безопасно.)
  3. Выполните ваши манипуляции элементов модальной в
  4. Вызов .modal()
+0

Такое простое решение, спасибо! Да '.modal()' действительно вставляет HTML в DOM, если он не вставлен раньше, я просто не уверен, когда. – silvenon