Bootstrap模态。身体不存在模态开放课

时间:2017-12-24 10:48:27

标签: jquery twitter-bootstrap-3 bootstrap-modal

我的项目正在使用bootstrap-modal。我需要逐个展示几个窗口。 我正在使用这样的函数来创建父窗口:

function createModalWindow(windowid,parentid,modelname,elementid,add_data, default_template){
    var url = '/invoice_settings/get_template/' + modelname ;
        $.ajax({
          url: url,
            success: function(data){
                var template = default_template;
                var body_template = data[0]['fields']['template'];

                template = template.replace('\{\{body_template\}\}', body_template);

                //skipped

                $(('#' + windowid)).detach();
                $("body").append(template);
                $(('#' + windowid)).modal('show');
                        //skipped

                $('#' + windowid).data('bs.modal').handleUpdate();
            },
            error: function () {
                        //skipped
            }
        });
}

在body-tag现在类'modal-open'和模态窗口工作正常(例如,以模态滚动工作而不在其下工作)

<body class="modal-open" style="">

在此窗口中,我尝试创建子窗口:

function selectElementUsingChildWindow(row_id, parentid, windowid, modelname, fieldname, default_template) {
    var url = '/invoice_settings/get_select_element_from_table/json/' + modelname + '/';
    $.ajax({
        url: url,
        success: function (data) {
            var template = default_template;
            template = template.replace('\{\{body_template\}\}', clearTblWithHeader);

            //skipped

            $(('#' + windowid)).detach();
            $('body').append(template);

            if(parentid.localeCompare("")!=0){
                $(('#' + parentid)).modal('hide'); //parentid is parent window ID. windowid - is current(child) window ID
            }
            $(('#' + windowid)).modal('show');

            $('#' + windowid).attr('data-row-id', row_id); // adding some info
            gen_body_tamplate_for_select_element_from_tbl(data, windowid, modelname); // add some data to table in child window (I'm using datatables)
            $('#' + windowid).data('bs.modal').handleUpdate();

        },
        error: function (data) {
           //skipped
        }
    });
}

现在我收到了一个问题。我的模态窗口看起来很好,但是body-tag没有“模态打开”类。当然我的模态窗口不滚动。它下面的页面滚动很好:)。

<body class style >

我的孩子窗口的高度比浏览器窗口高,窗口上的窗口不湿。 $('#'+ windowid).data('bs.modal')。handleUpdate() - 无效。 我试图设置'模态开放'类manualy。 在gen_body_tamplate_for_select_element_from_tbl()之后我调用了checkOnModalOpen()函数:

function selectElementUsingChildWindow(row_id, parentid, windowid, modelname, fieldname, default_template) {
    var url = '/invoice_settings/get_select_element_from_table/json/' + modelname + '/';
    $.ajax({
        url: url,
        success: function (data) {

            //skipped
            gen_body_tamplate_for_select_element_from_tbl(data, windowid, modelname); // add some data to table in child window (I'm using datatables)
            checkOnModalOpen(windowid);
            $('#' + windowid).data('bs.modal').handleUpdate();

        },
        error: function (data) {
           //skipped
        }
    });
}

function checkOnModalOpen(windowid) {
    console.log('checkOnModalOpen(windowid) ' + $('body').hasClass('modal-open'));
    if ($('body').hasClass('modal-open')==false){
        $('body').addClass('modal-open');
    }
}

但每次$('body')。hasClass('modal-open')都会返回True。

如何解决此问题? 为什么每次从body-tag中删除类'modal-open'而且我不能手动添加类?

0 个答案:

没有答案