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


Posted in Javascript onJuly 09, 2017

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

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

<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="#" rel="external nofollow" rel="external nofollow" class="btn" data-dismiss="modal">取消</a>
  <a href="#" rel="external nofollow" rel="external nofollow" class="btn btn-primary" data-dismiss="modal">确定</a>
 </div>
</div>

显示效果与下图相似:

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

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

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

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

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

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

2.1 使用链接

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

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

2.2 使用脚本

$("#myModal").modal({
 remote: "page.jsp"
});

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

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

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

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

$("#myModal").on("hidden", function() {
 $(this).removeData("modal");
});

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

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

$("#myModal").on("hidden.bs.modal", function() {
 $(this).removeData("bs.modal");
});

以上所述是小编给大家介绍的Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
jquery 圆形旋转图片滚动切换效果
Jan 19 Javascript
为原生js Array增加each方法
Apr 07 Javascript
qq悬浮代码(兼容各个浏览器)
Jan 29 Javascript
ExtJs纵坐标值重复问题的解决方法
Feb 27 Javascript
JS实现的数组全排列输出算法
Mar 19 Javascript
Ztree新增角色和编辑角色回显问题的解决
Oct 25 Javascript
JavaScript Base64 作为文件上传的实例代码解析
Feb 14 Javascript
微信小程序网络请求的封装与填坑之路
Apr 01 Javascript
AngularJS使用ng-repeat遍历二维数组元素的方法详解
Nov 11 Javascript
详解vuex的简单todolist例子
Jul 14 Javascript
ES5新增数组的实现方法
May 12 Javascript
jQuery实现放大镜案例
Oct 19 jQuery
收藏AngularJS中最重要的核心功能
Jul 09 #Javascript
Bootstrap Multiselect 常用组件实现代码
Jul 09 #Javascript
解决JS外部文件中文注释出现乱码问题
Jul 09 #Javascript
JavaScrpt中如何使用 cookie 设置查看与删除功能
Jul 09 #Javascript
jQuery封装placeholder效果实现方法,让低版本浏览器支持该效果
Jul 08 #jQuery
jQuery制作全屏宽度固定高度轮播图(实例讲解)
Jul 08 #jQuery
详谈javascript精度问题与调整
Jul 08 #Javascript
You might like
实战mysql导出中文乱码及phpmyadmin导入中文乱码的解决方法
2010/06/11 PHP
使用php 获取时间今天明天昨天时间戳的详解
2013/06/20 PHP
PHP 实现explort() 功能的详解
2013/06/20 PHP
php准确获取文件MIME类型的方法
2015/06/17 PHP
WordPress中用于检索模版的相关PHP函数使用解析
2015/12/15 PHP
利用php抓取蜘蛛爬虫痕迹的示例代码
2016/09/30 PHP
php的laravel框架快速集成微信登录的方法
2016/12/12 PHP
效率高的Javscript字符串替换函数的benchmark
2008/08/02 Javascript
firefox浏览器不支持innerText的解决方法
2013/08/07 Javascript
javascript中定义类的方法详解
2015/02/10 Javascript
TypeScript具有的几个不同特质
2015/04/07 Javascript
jQuery添加options点击事件并传值实例代码
2016/05/18 Javascript
JS仿百度自动下拉框模糊匹配提示
2016/07/25 Javascript
在web中js实现类似excel的表格控件
2016/09/01 Javascript
JS实现简单抖动效果
2017/06/01 Javascript
vue移动端裁剪图片结合插件Cropper的使用实例代码
2017/07/10 Javascript
老生常谈javascript的面向对象思想
2017/08/22 Javascript
详解如何去除vue项目中的#——History模式
2017/10/13 Javascript
微信小程序搭建自己的Https服务器
2019/05/02 Javascript
JavaScript 面向对象基础简单示例
2019/10/02 Javascript
Node.js API详解之 console模块用法详解
2020/05/12 Javascript
python动态监控日志内容的示例
2014/02/16 Python
python中精确输出JSON浮点数的方法
2014/04/18 Python
python实现获取序列中最小的几个元素
2014/09/25 Python
基于Python如何使用AIML搭建聊天机器人
2016/01/27 Python
Python编程使用tkinter模块实现计算器软件完整代码示例
2017/11/29 Python
python批量修改ssh密码的实现
2019/08/08 Python
Python使用Opencv实现图像特征检测与匹配的方法
2019/10/30 Python
python 如何停止一个死循环的线程
2020/11/24 Python
跑鞋、网球鞋、网球拍、服装及装备:Holabird Sports
2016/09/19 全球购物
2014银行授权委托书样本
2014/10/04 职场文书
2014年企业团支部工作总结
2014/12/10 职场文书
租赁协议书
2015/01/27 职场文书
青岛海底世界导游词
2015/02/11 职场文书
生命的关键成分来自太空?陨石说是的
2022/04/29 数码科技
javascript进阶篇深拷贝实现的四种方式
2022/07/07 Javascript