bootstrapDialog插件集成datatables插件遇到的异常
最近项目中,涉及到很多细分领域的东西,有好些目前还没有详细的方案。这是后话,当前起步阶段,我要把握技术路线,搭建基础架构!其中,有好几个地方都用到模态框(Modal), 虽然Bootstrap框架里面有这么一个插件Modal。但是他不是很好用,就比如,因为他可以说是比较原始的JS组件。至少开发一个模态框实现类似Windows的模态框框,居中在显示屏的中间,主要是水平方向居中,不是很方便。
Bootstrap组件的Modal的水平居中,网上有些方案,我也尝试过,不是很稳定,就比如下面:
<!-- 模态框(Modal) -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static">
<div class="modal-dialog">
<div class="modal-content" style="width: 150%;">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" id="myModalLabel">站点切换 </h4>
</div>
<div class="modal-body">
<table id="site-table" class="table table-striped table-hover">
<thead>
<tr>
<th>站点ID</th>
<th>站点域名</th>
<th>描述信息</th>
<th>单选按钮</th>
</tr>
</thead>
<tbody>
</tbody>
<!--<tr class="divider"/>-->
</table>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-cancel" data-dismiss="modal"><i class="glyphicon glyphicon-arrow-left"></i> 取消 </button>
<button id="siteSwitch" type="button" class="btn btn-success"><i class="glyphicon glyphicon-ok"></i> 切换 </button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
对应的JS代码:
<script type="text/javascript">
/* center modal */
function centerModals(){
$('.modal').each(function(i){
var $clone = $(this).clone().css('display', 'block').appendTo('body');
var top = Math.round(($clone.height() - $clone.find('.modal-content').height()) / );
var left = Math.round(($clone.width() - $clone.find('.modal-content').width()) / );
top = top > ? top : ;
left = left > ? left : ;
$clone.remove();
$(this).find('.modal-content').css("margin-top", top).css("margin-left", left);
});
} $(document).ready(function(){
$('.modal').on('show.bs.modal', centerModals);
$(window).on('resize', centerModals); $('#siteSwitchModal').click(function(){
$('#myModal').modal({keyboard: false, show: true});
});
});
</script>
操作逻辑是点击id为siteSwitchModal的按钮,显示出模态框,依据上面的逻辑代码,会出现有时居中,有时有点偏,总之不能稳定的居中,但是,垂直方向上可以居中,由于时间紧,没有时间深入研究,若有高人指点,欢迎!
后来,选择了BootstrapDialog插件,其使用非常的方便,简单,这个插件应该是针对Bootstrap的Modal组件进行的二次开发得到的。为了实现我期望的水平方向居中,只需要下面的配置即可:
<script src="${basePath}/js/bootstrap-dialog.min.js"></script>
<link href="${basePath}/css/bootstrap-dialog.min.css" rel="stylesheet">
<script type="text/javascript">
$(document).ready(function(){
$('#siteSwitchModal').click(function(){
BootstrapDialog.show({
size: BootstrapDialog.SIZE_WIDE,
title: '站点切换',
closable: true,
draggable: true,
closeByBackdrop: false,
closeByKeyboard: false,
message: $('<div></div>').load('${basePath}/system/site/siteSwitch'),
buttons: [{
label: '取消',
action: function(dialogRef){
dialogRef.close();
}
},{
label: '切换',
cssClass: 'btn-success',
action: function(dialogRef){
dialogRef.close(); //此处的逻辑还未来得及实现
}
}]
});
});
});
</script>
这个看上去很简单,也的确很简单。但是,我遇到了一点小麻烦,那就是我的Dialog中的正文区,希望显示一个table(基于Datatable插件),核心代码,就是
message: $('<div></div>').load('${basePath}/system/site/siteSwitch'),
利用jQuery的函数load (其实就是一个ajax的请求)从后台拉取html的文件。问题就在这个html的内容上了。如下是我遇到问题的view层模板文件:
<!DOCTYPE html>
<html>
<head>
4 <script src="${basePath}/js/jquery-1.11.1.min.js"></script>
5 <script src="${basePath}/js/bootstrap.min.js"></script>
6 <script src="${basePath}/js/jquery.dataTables.min.js"></script>
7 <link href="${basePath}/css/bootstrap.min.css" rel="stylesheet">
8 <link href="${basePath}/css/jquery.dataTables.min.css" rel="stylesheet">
9 <link href="${basePath}/css/common.css" rel="stylesheet">
</head> <body>
<div class="container">
<div class="row">
<table id="site-table" class="table site-switch-table">
<thead>
<tr>
<th>站点ID</th>
<th>站点域名</th>
<th>描述信息</th>
<th>单选按钮</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</body>
<script type="text/javascript">
$(document).ready(function(){
var table = $('#site-table').dataTable({ "bFilter":true, "bSort":true,
//"bServerSide" : true,
//"sAjaxSource":"./userInfo",
"language": {
"url": "${basePath}/fonts/Chinese.json"
}});
});
</script>
</html>
问题现象是Modal对话框能够显示出来,但是,在它之下的页面的内容出现了移动,也就是说模态对话框对下面的页面的显示样式产生干扰,而且这个干扰貌似不仅位置移动,还有鼠标点击事件也被干扰了,有些按钮点的动,有的点不动。
看看下面两个图,图1是没有点击“切换”按钮的时候主页面上的按钮“创建专题”的位置,图2是点击切换按钮后,弹出模态框时,“创建专题”按钮的位置被莫名移动到下面的位置了。图3是我期望的样子,模态框弹出后,“创建专题”按钮依然不受影响,还在图1中显示的位置。



图3中显示的效果,其实,是将Dialog拖拽过了的,这个也是BootstrapDialog插件的优势。
回头来说,显示正常后,分析得知,是因为modal对话框中加载的内容,就是那个load函数对应的返回值,一个html页面中包含了下面的内容:
<script src="${basePath}/js/jquery-1.11.1.min.js"></script>
<script src="${basePath}/js/bootstrap.min.js"></script>
<script src="${basePath}/js/jquery.dataTables.min.js"></script>
<link href="${basePath}/css/bootstrap.min.css" rel="stylesheet">
<link href="${basePath}/css/jquery.dataTables.min.css" rel="stylesheet">
<link href="${basePath}/css/common.css" rel="stylesheet">
但是,这些内容,在模态框的下面的页面中,其实也包含了。应该是这两个部分有什么联系,主要可能是因为BootstrapDialog对这个的隔离不太令人满意吧,于是,将要在Dialog中加载的内容,也就是message对应的内容中去掉上面的这些js和css文件,留下存的一点html内容就可以正常显示了。
这其中的具体原因,不是很清楚了。。。
bootstrapDialog插件集成datatables插件遇到的异常的更多相关文章
- mydate97时间插件集成jquery插件
1.初始化JS: //把mydate97时间插件集成jquery插件 (function ($) { $.fn.mydatePicker = function (options) { return t ...
- [jQuery]jQuery DataTables插件自定义Ajax分页实现
前言 昨天在博客园的博问上帮一位园友解决了一个问题,我觉得有必要记录一下,万一有人也遇上了呢. 问题描述 园友是做前端的,产品经理要求他使用jQuery DataTables插件显示一个列表,要实现分 ...
- 插件笔记——dataTables使用说明
jquery DataTables中文使用说明 出处:http://blog.vunso.com/201405/jquery-datatables%E4%B8%AD%E6%96%87%E4%BD%BF ...
- dataTables 插件学习整理
在项目中使用了dataTables 插件,学习整理一下. dataTables 的官方中文网站 http://www.datatables.club 引入文件: 所有的都要引入 jq文件 1. dat ...
- Datatables插件1.10.15版本服务器处理模式ajax获取分页数据实例解析
一.问题描述 前端需要使用表格来展示数据,找了一些插件,最后确定使用dataTables组件来做. 后端的分页接口已经写好了,不能修改.接口需要传入页码(pageNumber)和页面显示数据条数(pa ...
- Maven集成Tomcat插件
目录 类似插件及版本区别: 本地运行,启动嵌入式tomcat: 错误一: 错误二: Idea运行调试: vscode运行调试: 远程部署: 项目中的pom.xml配置: Tomcat中的tomcat- ...
- Jenkins中集成jmeter-maven插件
转自:http://my.oschina.net/u/1377774/blog/168969 目录[-] 第一步.先在maven工程中单独使用jmeter-maven插件 0.环境 1.在POM.xm ...
- datatables插件适用示例
本文共四部分:官网 | 基本使用|遇到的问题|属性表 一:官方网站:[http://www.datatables.NET/] 二:基本使用:[http://www.guoxk.com/node/jQu ...
- solr服务中集成IKAnalyzer中文分词器、集成dataimportHandler插件
昨天已经在Tomcat容器中成功的部署了solr全文检索引擎系统的服务:今天来分享一下solr服务在海量数据的网站中是如何实现数据的检索. 在solr服务中集成IKAnalyzer中文分词器的步骤: ...
随机推荐
- 转:服务器控件的 ID,ClientID,UniqueID 的区别
动态加载用户控件的怪问题 动态加载用户控件的时候,会因为调用一些控件的一些属性和方法而造成控件命名混乱. 因为add 一个用户控件或者 loadcontrol 的时候 如果没有指定控件的id,clie ...
- CART
一.为什么有CART回归树 以前学过全局回归,顾名思义,就是指全部数据符合某种曲线.比如线性回归,多项式拟合(泰勒)等等.可是这些数学规律多强,硬硬地将全部数据逼近一些特殊的曲线.生活中的数据可是千变 ...
- mybatis和model关联
<select id="getSubCreditLogBySubCreditId" parameterType="long" resultType=&qu ...
- C# string[,]与string[][]的区别
对于这两者的区别: 1.入门:string[,]可读可写,而string[][]与string[]相同,不可对第二位进行写操作 static void Main(string[] args) { // ...
- smartmontools的安装使用和实现对磁盘的Nagios监控
安装 首先从sourceforge下载最新的安装版本. 解压编译 $ tar -zxvf smartmontools-6.4.tar.gz $ cd smartmontools-6.4 $ ./con ...
- Topcoder Arena插件配置和训练指南
一. Arena插件配置 1. 下载Arena 指针:http://community.topcoder.com/tc?module=MyHome 左边Competitions->Algorit ...
- UVa 10120 - Gift?!
题目大意 美丽的村庄里有一条河,N个石头被放置在一条直线上,从左岸到右岸编号依次为1,2,...N.两个相邻的石头之间恰好是一米,左岸到第一个石头的距离也是一米,第N个石头到右岸同样是一米.礼物被放置 ...
- UI学习笔记---第九天UITableView表视图
UITableView表视图 一.表视图的使用场景 表视图UITableView是iOS中最重要的视图,随处可见,通常用来管理一组具有相同数据结构的数据 表视图继承自UIScrollView,所以可以 ...
- ZOJ 1178 Booklet Printing
原题链接 题目大意:书本印刷都是用大开的纸张对折.比如一个册子一共4页,为了方便装订,外侧印刷1.4页,内侧印刷2.3页,这样对折之后就可以按照正常阅读习惯翻页了.此题目的就是给出书的总页数,要求计算 ...
- Javascript模块化编程(一):模块的写法【转】
作者: 阮一峰 日期: 2012年10月26日 随着网站逐渐变成"互联网应用程序",嵌入网页的Javascript代码越来越庞大,越来越复杂. 网页越来越像桌面程序,需要一个团队分 ...