Как использовать Modal в Bootstrap3?

Необходимо на 1 странице использование нескольких модальных окон. Проблема в том, что приходится каждый раз копировать содержимое и саму модалку.

Хотелось бы 1 раз инициализировать её и передавать туда данные в зависимости от нажатой кнопки.
  • Вопрос задан
  • 3221 просмотр
Решения вопроса 1
evsmusic
@evsmusic
@watch2raff

3 кнопки
<button data-modal-num="1" class="btn btn-primary btn-lg">Launch modal 1</button>
<button data-modal-num="2" class="btn btn-primary btn-lg">Launch modal 2</button>
<button data-modal-num="3" class="btn btn-primary btn-lg">Launch modal 3</button>


$('body').on('click', 'button', function(){
    var $this = $(this);
    var ourCommonModal = $('#myCommonModal');
    var ourModalBody = ourCommonModal.find('.modal-body');
    var modalNum = $this.data('modal-num'); //тут у нас будет номер модалки которую надо вызвать
    var someDataForModalOne = "First button clicked";
    var someDataForModalTwo = "Second button clicked";
    var someDataForModalThree = "Third button clicked";

//тут будут условные операторы, но в реальном контексте смотри уже что конкретно нужно сделать, вероятно они не нужны

if(modalNum == 1){
    outModalBody.html(someDataForModalOne);
} else if(modalNum == 2){
    outModalBody.html(someDataForModalTwo);
} else {
    outModalBody.html(someDataForModalThree);
}

//инициализируем окно
ourCommonModal.modal('show');

});


Наша общая модалка, по умолчанию display:none
<div class="modal fade" id="myCommonModal">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
        <h4 class="modal-title">MyCommonTitle</h4>
      </div>
      <div class="modal-body">
        <p>My Not Common Data</p>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div><!-- /.modal-content -->
  </div><!-- /.modal-dialog -->
</div><!-- /.modal -->


Я правильно вопрос понял?
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
evsmusic
@evsmusic
JavaScript? Повесьте обработчик, присвойте разным модалкам айдишники и передавайте данные
Ответ написан
@watch2raff
На счет айдишников, по умолчанию модальные окна используют id-элемента.
Если три ссылки на странице и у каждой своё модальное окно, то получается нужно три разных модальных окна. А если у всех этих трех модальных окнах хедер, боди и футер одинаковые.
Как сделать так чтобы один раз на странице закодить модальное окно, а взависимости от ссылки открывалось модальное окно с соответствующим содержимым.
Ответ написан
MindMinimal
@MindMinimal
Front-end Developer, веб-разработчик
Попробуйте использовать data-* атрибуты. Т.е. при клике на ссылку проверять эти атрибуты и использовать их. Или неясно?)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы