JavaScript bootstrap3 modal 弹出框 remote 获取后,消去子元素后,再弹出 remote 加载失败!

stephen · 2013年11月20日 · 最后由 hz_qiuyuanxin 回复于 2013年11月20日 · 8917 次阅读

我是用 bootstrap3 里面的 modal, 我所有页面都用一个#myModal 作为一个弹出框 div,所弹出的框的内容是通过 remote 来获取内容,都是 html 页面。 但是出现的问题是,比如 a 页面,有两个按钮 b 和 c,分别是 remote 不同页面的。 当我按 b 按钮弹出后,我 close 弹出框后,再按其 c 按钮弹出,里面是的内容是 b 按钮弹出的内容。 所以他没有从新加载。 我现在尝试用

$('#myModal').on('hidden.bs.modal', function () {
  $('#myModal').empty();
})

来清空,这样可以清空,但我再按按钮加载新的,居然连弹出框都没了,只有灰色的遮罩层! 请问我哪里错误了?

会不会是 turbolinks 造成的问题?

@chunlea 文档没说明,可能是我自己找不到,下面是解决办法!

$(document).ready(function(){
    $('#myModal').on('hide.bs.modal', function () {
        $(this).removeData('bs.modal');
    })
})

这个我也遇到过,然后我看了一下源码。

其实原理很简单,你点 b 之后,它就把实例化出来的对象跟 b 绑定起来了,很是恶心! 所以你只要在每次关闭之后,Remove 掉它这个相应的 data 就可以了。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号