2013-06-19 5 views
1

Я работаю над проектом с Twitter Bootstrap. Он состоит из одной html-страницы и с помощью jQuery извлекает данные и страницы с сервера.
У меня есть уникальный модальный для всего проекта, и я добавляю данные в тело каждый раз, когда я его показываю. Моя проблема в том, что когда я закрываю модальный и снова открываю его с новым контентом, javascript перестает работать и модальный не открывается. Если я добавлю некоторую задержку между закрытием и открытием, она работает на некоторых браузерах, но не на других (например, хром), и код действительно уродлив.
Я думаю, что мне нужно связать событие, когда модальное закрытие перед открытием нового. Вот мой код для открытия модального:Twitter Bootstrap: close modal wait for close and open new

function apriModal(header, messaggio, callback, conferma) { 
    var re = new RegExp("</?\w+\s+[^>]*>"); 
    $("#modalHeaderTitle").text(header); 
    if (messaggio.match(re)) { 
     $("#modalBodyText").html(messaggio); 
    } 
    else { 
     $("#modalBodyText").html("<p>" + messaggio + "</p>"); 
    } 
    (!conferma) ? $("#modalConfirm").hide() : $("#modalConfirm").show(); 
    $("#finestraModal").modal('show') 
    $("#modalConfirm").off().click(function() { 
     if (conferma) { 
      $("#finestraModal").modal('hide') 
      conferma(); 
     } 
    }); 
    $("#modalClose").show(); 
    $("#modalClose").off().click(function() { 
     if (callback) { 
      callback(); 
     } 
     $("#finestraModal").modal('hide'); 
    }); 
} 

Вот небольшой пример: http://jsfiddle.net/thetom/nqNzr/15/
Если вам нужно больше информации спросить. Большое вам спасибо!

+0

Во-первых, есть небольшая опечатка. Вы должны иметь точку с запятой в конце строки '$ (« # finestraModal »). Modal ('hide')' или второй модальный не остается на экране (по крайней мере для меня с Chrome на Win7). С добавлением точки с запятой, что для меня происходит, когда я нажимаю кнопку «подтвердить», затем нажимаю кнопку «закрыть», модальный закрывается, но занавес остается над страницей в фоновом режиме. Чтобы исправить это, я просто прокомментировал строку: '$ (" # finestraModal "). Modal ('hide');' Модаль не имеет приятного затухания в/из, но по крайней мере он работает! –

+0

Благодарим вас за помощь. Я видел и исправлял опечатку. Решение, которое вы предоставили, просто изменяет содержимое модальности, не закрывая и не открывая его. Моя цель - закрыть и вновь открыть модальный, чтобы убедиться, что пользователь видит новое приглашение. –

ответ

8

Это старый вопрос, но это то, что я делал, чтобы закрыть модальное, ждать его закрыть, а затем открыть новый:

//Hide the fromModal and open toModal 
function switchModals(fromModal, toModal) 
{ 
    $(fromModal).on('hidden.bs.modal', function (e) { 
     $(toModal).modal('show'); 
     //clear this function so it doesn't show up if they exit the window again 
     $(fromModal).off(); 
    }); 
    $(fromModal).modal('hide'); 
} 

Не уверен, что некоторые из что вы делаете, есть, но эта функция делает основы. Назовите его как

switchModals("#ModalToClose","#ModalToOpen");