基于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 相关文章推荐
Javascript 模式实例 观察者模式
Oct 24 Javascript
Script的加载方法小结
Jan 12 Javascript
jQuery javaScript捕获回车事件(示例代码)
Nov 07 Javascript
javascript函数式编程实例分析
Apr 25 Javascript
JavaScript中数组的合并以及排序实现示例
Oct 24 Javascript
input点击后placeholder中的提示消息消失
Jan 15 Javascript
JS中parseInt()和map()用法分析
Dec 16 Javascript
微信小程序 PHP生成带参数二维码
Feb 21 Javascript
正则 js分转元带千分符号详解
Mar 08 Javascript
JavaScript中如何判断一个值的类型
Sep 15 Javascript
JQuery属性操作与循环用法示例
May 15 jQuery
vue中使用element ui的弹窗与echarts之间的问题详解
Oct 25 Javascript
详谈AngularJs 控制器、数据绑定、作用域
Jul 09 #Javascript
vue子父组件通信的实现代码
Jul 09 #Javascript
vue2中filter()的实现代码
Jul 09 #Javascript
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
Jul 09 #Javascript
收藏AngularJS中最重要的核心功能
Jul 09 #Javascript
Bootstrap Multiselect 常用组件实现代码
Jul 09 #Javascript
解决JS外部文件中文注释出现乱码问题
Jul 09 #Javascript
You might like
使用Smarty 获取当前日期时间和格式化日期时间的方法详解
2013/06/18 PHP
phpphp图片采集后按原路径保存图片示例
2014/02/18 PHP
php自动识别文件编码并转换为UTF-8的方法
2014/06/12 PHP
yiic命令时提示“php.exe”不是内部或外部命令的解决方法
2014/12/18 PHP
简单介绍win7下搭建apache+php+mysql开发环境
2015/08/06 PHP
JavaScript调用Activex控件的事件的实现方法
2010/04/11 Javascript
jquery中ajax调用json数据的使用说明
2011/03/17 Javascript
深入理解JavaScript的React框架的原理
2015/07/02 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(二)
2016/02/16 Javascript
浅谈JS原生Ajax,GET和POST
2016/06/08 Javascript
jQuery 限制输入字符串长度
2016/06/20 Javascript
JS控制静态页面之间传递参数获取参数并应用的简单实例
2016/08/10 Javascript
Angular组件化管理实现方法分析
2017/03/17 Javascript
微信小程序实战之登录页面制作(5)
2020/03/30 Javascript
详解Vue.js 2.0 如何使用axios
2017/04/21 Javascript
在vue组件中使用axios的方法
2018/03/16 Javascript
React从react-router路由上做登陆验证控制的方法
2018/05/10 Javascript
如何使node也支持从url加载一个module详解
2018/06/05 Javascript
小程序云开发实战小结
2018/10/25 Javascript
layui+jquery支持IE8的表格分页方法
2019/09/28 jQuery
微信小程序开发之获取用户手机号码(php接口解密)
2020/05/17 Javascript
JavaScript实现消消乐的源代码
2021/01/12 Javascript
python类定义的讲解
2013/11/01 Python
使用PIL(Python-Imaging)反转图像的颜色方法
2019/01/24 Python
djang常用查询SQL语句的使用代码
2019/02/15 Python
浅谈Python中函数的定义及其调用方法
2019/07/19 Python
python+Django实现防止SQL注入的办法
2019/10/31 Python
Python验证码截取识别代码实例
2020/05/16 Python
英国最大的正宗复古足球衫制造商和零售商:TOFFS
2018/06/21 全球购物
业务助理岗位职责
2013/11/18 职场文书
初中三好学生事迹材料
2014/01/13 职场文书
建筑安全员岗位职责
2014/03/13 职场文书
在职员工证明书
2014/09/19 职场文书
2014年安全管理工作总结
2014/12/01 职场文书
java设计模式--三种工厂模式详解
2021/07/21 Java/Android
Golang表示枚举类型的详细讲解
2021/09/04 Golang