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中文分词器的步骤: ...
随机推荐
- turn.js实现翻书效果
JS插件网 http://www.ijquery.cn/?p=173 描述:Turn.js 是一个轻量级的 (15kb) jQuery/html5 插件用来创建类似书本和杂志翻页效果,支持触摸屏设备. ...
- 触摸事件UITouch的用法
触摸屏幕是iOS设备接受用户输入的主要方式,包括单击.双击.拨动以及多点触摸等,这些操作都会产生触摸事件. 在Cocoa中,代表触摸对象的类是UITouch.当用户触摸屏幕后,就会产生相应的事件,所有 ...
- python内置的数据结构
详解列表List 这里是列表对象方法的清单: list.append(x) 添加一个元素到列表的末尾.相当于a[len(a):] = [x]. list.extend(L) 将给定列表L中的所有元素附 ...
- struts2 中的 result 返回类型是 json 的配置问题
struts2 中的 result 返回类型是 json 的配置问题 1.引入包(本文中的包全部引自struts-2.1.8.1\lib): struts2-json-plugin-2.1.8.1.j ...
- cuffdiff 和 edgeR 对差异表达基因的描述
ASE又走到了关键的一步 要生成能决定是否有差异表达的table. 准备借鉴一下cuffdiff和edgeR 的结果 cuffdiff对差异表达基因的描述: 一共十四列: 第一列, test_id ...
- spring学习笔记---Jackson的使用和定制
前言: JAVA总是把实体对象(数据库/Nosql等)转换为POJO对象再处理, 虽然有各类框架予以强力支持. 但实体对象和POJO, 由于"饮食习惯", "民族特色 ...
- centos6.4搭建knowlededgeroot-1.0.4知识库平台
知识库平台选择 http://www.oschina.net/project/tag/320/pkm 最近接到一个任务,要求搭建一个用于部门内部业务知识规范管理和共享的平台,目的是把部门内的FAQ知识 ...
- leetcode 145. Binary Tree Postorder Traversal ----- java
Given a binary tree, return the postorder traversal of its nodes' values. For example:Given binary t ...
- [USACO11JAN]利润Profits
题目描述 The cows have opened a new business, and Farmer John wants to see how well they are doing. The ...
- 1-2 ISO/OSI七层模型简介
相关名词解释: ISO:国际标准化组织 OSI:开放系统互联模型 IOS:苹果操作系统, 但是在计算机网络中,IOS是互联网操作系统,是思科公司为其网络设备开发的操作维护系统 <1>OSI ...