我的项目正在使用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'而且我不能手动添加类?