【问题标题】:Use bootstrap .modal() on dynamically loaded content在动态加载的内容上使用 bootstrap .modal()
【发布时间】:2012-12-16 05:53:14
【问题描述】:

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

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',{...}),但没有成功。

【问题讨论】:

  • 确定你加载了 modal.js 吗?另外,您是否尝试自动打开模式或在 btn 单击或类似的东西上打开模式?
  • @Badaboooooom 允许我分享 js 文件:dropbox.com/s/osgkfcmqtm4p42v/init.js

标签: javascript jquery twitter-bootstrap modal-dialog


【解决方案1】:

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

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

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

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

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

你改变了模态css吗?

【讨论】:

  • 是的,.modal *, .modal input, .alert { font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;}.modal &gt; h4 { padding-bottom:7px }.modal-body { padding-bottom:0 }
  • 为什么你要重复 Helvetica Neue 我认为 bootstrap 自己使用
  • @Badaboooooom 我的网站使用了不同的主字体,我自定义了它。
【解决方案2】:

试试这个:

    $('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',
            }); 

【讨论】:

  • 现在我的网站无法通过附加脚本,它卡住了,但我没有收到控制台错误。 file I posted 会实时更新,因此您可以看到我所做的更改。
  • 呃……太奇怪了,你能提醒你的模态 html 吗?它向您显示模态?那么你可以创建一个 jsfiddle.net 以便我可以深入帮助你吗?
  • 我会把我的网站上传到 ftp 并给你一个链接,等等。
【解决方案3】:

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

http://jsfiddle.net/xjCAn/

我无法在没有代码的情况下发布此内容:

' Nothing, really

【讨论】:

【解决方案4】:

在@Badaboooooom 和@ic3b3rg 的大量帮助下,我不得不在脚本标记中将.modal({... remote : '...', ..}) 换成data-remote="..." 标签,并且还必须从#lngModal 中删除.fade

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

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

【讨论】:

  • 为什么 data-remote 能解决这个问题,/language.html 是从哪里来的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-24
  • 1970-01-01
  • 2019-06-03
  • 1970-01-01
  • 1970-01-01
  • 2019-06-16
相关资源
最近更新 更多