Bootstrap 模态对话框只加载一次 remote 数据的解决办法

前端框架 Bootstrap 的模态对话框,可以使用 remote 选项指定一个 URL,这样对话框在第一次弹出的时候就会自动从这个地址加载数据到 .modal-body 中,但是它只会加载一次,不过通过在事件中调用 removeData() 方法可以解决这个问题。

Bootstrap modals dialog hidden removeData

目录[-]

1. Bootstrap 模态对话框和简单使用


1

2

3

4

5

6

7

8

9

10

11

12

13

<div id="myModal" class="modal hide fade">

    <div class="modal-header">

        <button type="button" class="close" data-dismiss="modal">x</button>

        <h3>对话框标题</h3>

    </div>

    <div class="modal-body">

        <p>对话框主体</p>

    </div>

    <div class="modal-footer">

        <a href="#" class="btn" data-dismiss="modal">取消</a>

        <a href="#" class="btn btn-primary" data-dismiss="modal">确定</a>

    </div>

</div>

显示效果与下图相似:

可以使用按钮或链接直接调用模态对话框,这是简单的用法:


1

2

<button type="button" data-toggle="modal" data-target="#myModal">打开对话框</button>

<a href="#myModal" role="button" class="btn" data-toggle="modal">打开对话框</button>

这样只能把静态内容在对话框中显示出来,使用对话框的 remote 选项可以实现更强大的效果。

2. 使用 remote 选项让模态对话框加载页面到 .modal-body 中

有两种方法,一种是使用链接,另一种就是使用脚本。

2.1 使用链接


1

<a href="page.jsp" data-toggle="modal" data-target="#myModal">打开对话框</a>

当点击此链接时,page.jsp 的内容会被加载到对话框的 .modal-body 中,随即显示对话框。

2.2 使用脚本


1

2

3

$("#myModal").modal({

    remote: "page.jsp"

});

这段脚本的效果和使用链接是一样的,当这段脚本执行后,page.jsp 的内容会被加载到对话框的 .modal-body 中,随即显示对话框。

这两种方法的背后,都是 Bootstrap 调用了 jQuery 的 load() 方法,从服务器端加载了 page.jsp 页面。但这个加载只会发生一次,后面不管你点击几次链接,或者执行几次脚本,哪怕改变传递给 remote 选项的值,对话框都不会重新加载页面,这真是个让人头疼的事情。不过问题还是能够解决的。

3. 移除数据,让对话框能够在每次打开时重新加载页面

在搜索并查阅了相关文档后,发现在对话框的 hidden 事件里写上一条语句就可以了:


1

2

3

$("#myModal").on("hidden"function() {

    $(this).removeData("modal");

});

也可以在每次打开对话框之前移除数据,效果是一样的。

注:上面的代码基于 Bootstrap v2,如果使用 Bootstrape v3,模态对话框的 HTML 和事件的写法有一些不同,例如对于上面的 hidden 事件,要写成:


1

2

3

$("#myModal").on("hidden.bs.modal"function() {

    $(this).removeData("bs.modal");

});

http://my.oschina.net/qczhang/blog/190215?p=1

时间: 2024-08-05 19:37:02

Bootstrap 模态对话框只加载一次 remote 数据的解决办法的相关文章

Bootstrap 模态对话框只加载一次 remote 数据的解决办法(来源于网络)

1. Bootstrap 模态对话框和简单使用 1 2 3 4 5 6 7 8 9 10 11 12 13 <div id="myModal" class="modal hide fade">     <div class="modal-header">         <button type="button" class="close" data-dismiss="

bootstrap模态框远程加载网页的正确处理方式

bootstrap模态框远程加载网页的方法 在bootsrap模态框文档里给出了这个方法: 使用链接模式 <a data-toggle="modal" href="tieniu.php" data-target="#modal">Click me</a> 使用脚本模式: $("#modal").modal({ remote: "tieniu.php" }); 没有给出任何实例,这种用

protel 99se 加载库文件 files not recognised 解决办法-转

WIN7操作系统下,protel99se添加元件库的操作方法(非修改ADVSch99SE方法) 最近更换了新电脑,操作系统是正版的WIN7,在用protel时发现元件库无法加载,很是郁闷,上网查找解决方法,发现基本就一种方法,但我按照该方法操作后发现根本不起作用,大有上当之恼,直叹息许多博主光知道转载他人文章,却不理会其可行性,由是本人花了一个上午的时间终于找到了一个添加元件库的方法,虽然极尽粗糙,但还是有帮助的,现配合图片如下:< xmlnamespace prefix ="v"

WPF循环加载图片导致内存溢出的解决办法

程序场景:一系列的图片,从第一张到最后一张依次加载图片,形成"动画". 生成BitmapImage的方法有多种: 1. var source=new BitmapImage(new Uri("图片路径",UriKind.xxx)); 一般的场景使用这种方法还是比较方便快捷,但是对于本场景,内存恐怕得爆. 2. var data =File.ReadAllBytes("图片路径"); var ms = new System.IO.MemoryStr

IIS无法加载字体文件(*.woff,*.svg)的解决办法

在编写前端代码的过程中经常会遇到使用特定的字体(*.woff,*.svg),此时在加载字体时请求会被返回 Failed to load resource: the server responded with a status of 404 (Not Found). 原因是,默认在IIS上是没有添加对*.woff,*.svg文件的Mime类型,因此在客户端请求此类文件时得到的都是404. 所以我们只需要在我们对应网站下的Mime类型中添加文件对应的类型就行了 .woff  application/

DuiLib中的GifAnim控件无法加载或者播放Gif动画的解决办法

一.无法加载gif图片的问题,因为GifAnim控件加载图片使用的是Gdi+,然而在控件中并没有初始化Gdi+,所以只需要在自己的主窗口类中添加如下代码: 1 // 全局 2 Gdiplus::GdiplusStartupInput gdiplusStartupInput; 3 ULONG_PTR gdiplusToken; 4 // 初始化函数中 5 //初始化GDI+. 6 GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL

关于wordpress后台首页加载ajax.googleapis特别慢的解决办法

通过审查元素发现,拖慢后台加载速度的主要是两个路径 1.https://ajax.googleapis.com/ajax/libs/prototype/1.7.1.0/prototype.js 2.http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.21/themes/smoothness/jquery-ui.css 都是谷歌的,现在国内访问谷歌几乎是访问不了,必须要FQ才可以,下面是解决这两东西的办法 第一种: 通过wordpress后台安装 ‘

微信小程序-工具无法加载本地模拟开发服务的解决办法

微信小程序开发工具出现如下问题: 因为网络代理软件或者 VPN 影响,工具无法加载本地模拟开发服务  请尝试以下任一解决方案1.关闭相关网络代理软件,重新编译成功后,再启动相关网络代理软件: 2.配置相关软件不针对 *.appservice.open.weixin.qq.com 和 *.debug.open.weixin.qq.com 进行代理: 3.配置相关软件不针对 开发者工具 做代理 但是根本没用任何代理,找了很多方法,最终解决: 设置windows防火墙,允许微信web开发者工具使用网络

使用custombox 和 validate 对动态加载的表达无法验证的解决办法

custombox.min.js  v3.0.2 jquery.validate.min.js jQuery Validation Plugin - v1.14.0 客户端用MVC的分部视图动态载入到主视图,js文件都在主视图调用 在custombox中使用 jQuery Validation针对动态添加的表单无法工作,验证不起作用,这里参考了网友大内老A的这篇文章如何解决jQuery Validation针对动态添加的表单无法工作的问题?问题得到解决 就是在动态载入的分部视图内加上这个自定义函