1

我正在使用 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/
如果您需要更多信息,请询问。非常感谢您!

4

1 回答 1

11

这是一个老问题,但这是我一直在做的关闭模式,等待它关闭,然后打开一个新的:

//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");
于 2014-06-24T14:33:15.443 回答