我正在使用Twitter Bootstrap开展一个项目。它由一个单独的html页面组成,在jQuery的帮助下,我从服务器获取数据和页面
我对整个项目有一个独特的模态,每当我展示它时,我都会在身体中附加数据。
我的问题是,当我关闭模态并用新内容重新打开它时,javascript停止工作并且没有打开模态。如果我在关闭和打开之间添加一些延迟,它可以在某些浏览器上运行但在其他浏览器上没有(例如chrome)并且代码非常难看。
我认为我应该在打开一个新模式之前关闭模态时绑定一个事件。
这是我打开模态的代码:
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 :(得分:9)
这是一个老问题,但这是我一直在做的关闭模态,等待它关闭,然后打开一个新模式:
//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");