对动态加载的内容使用bootstrap .modal()

时间:2013-01-01 16:57:06

标签: javascript jquery twitter-bootstrap modal-dialog

我的代码在这里,在正文的末尾插入一个预定义的模态标记:

var languageModal = 
'<div id="lngModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="lngModalLabel" aria-hidden="true">'+
'   <div class="modal-body"></div>'+
'   <div class="modal-footer">'+
'       <form class="inline" id="lngModalForm">'+
'           <button class="btn btn-primary" data-dismiss="modal" aria-hidden="true">'+
'               <span lang="hu"'+((langAfterInit == 'hu') ? '' : ' style="display:none;"')+'>Bezárás</span>'+
'               <span lang="en"'+((langAfterInit != 'hu') ? ' style="display:none;"' : '')+'>Close</span>'+
'           </button>'+
'       </form>'+
'   </div>'+
'</div>';

$('body').append(languageModal);

但是,当我在其上调用.modal()时,它将无法加载,只会显示黑色叠加层:

$('#lngModal').modal({
    backdrop    : 'static',
    keyboard    : false,
    remote      : '/language.html',
});

我尝试使用.on('modal',{...}),但这不起作用。

4 个答案:

答案 0 :(得分:1)

试试这个:

    $('body').append(languageModal,function(){
console.log('modal appended');
    $('#lngModal').modal({
                    backdrop    : 'static',
                    keyboard    : false,
                    remote      : '/language.html',
                }); 

console.log('modal init');
    });

而不是

$('body').append(languageModal);
            $('#lngModal').modal({
                backdrop    : 'static',
                keyboard    : false,
                remote      : '/language.html',
            }); 

答案 1 :(得分:1)

您的代码确实有效。你在加载bootstrap css吗?

http://jsfiddle.net/xjCAn/

我无法发布一些代码:

' Nothing, really

答案 2 :(得分:1)

在@ Badaboooooom 和@ ic3b3rg 的大量帮助之后,事实证明我必须在.modal({... remote : '...', ..})中换取data-remote="..."标签脚本标记,还必须从.fade中删除#lngModal

var languageModal =  '<div id="lngModal" class="modal hide"  data-remote="/language.html">'+
//other stuff

$('#lngModal').modal('show',{
    backdrop: true,
    keyboard: false,
}); 

答案 3 :(得分:0)

我也有过一次,但只有当我想通过使用以下css增加到模态大小时:

var modal = $('#lngModal');
modal.css({
   width: '60%',
   left: '20%',
   margin: 'auto auto auto auto',
   top: '10%'
});

我通过在max-height上设置modal-body来修复它:

var modalBody = modal.children('.modal-body');

modalBody.css({
   maxHeight: '800px'
});

您是否更改了模态css?