jQuery表格插件datatables用法汇总


Posted in Javascript onMarch 29, 2016

DataTables是一个jQuery的表格插件,本文为大家分享了表格插件datatables用法,介绍了基础的部分知识,具体内容如下

一、初始化
在页面中

<!DOCTYPE html>
<html>
 <head>
  <link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.11/css/jquery.dataTables.css">
  <script type="text/javascript" charset="utf8" src="//cdn.datatables.net/1.10.11/js/jquery.dataTables.js"></script>
 </head>
 <body>
  <table id="table_id" class="display">
 <thead>
  <tr>
   <th>Column 1</th>
   <th>Column 2</th>
  </tr>
 </thead>
 <tbody>
  <tr>
   <td>Row 1 Data 1</td>
   <td>Row 1 Data 2</td>
  </tr>
  <tr>
   <td>Row 2 Data 1</td>
   <td>Row 2 Data 2</td>
  </tr>
 </tbody>
</table>
 </body>
</html>

js中初始化

$(document).ready( function () {
 $('#table_id').DataTable();
} );

二、常用配置
在初始化的时候可以通过一些常用的配置项对表格进行配置,这是我在项目中实际用到的

$("#vivo_table_list").dataTable({
   pageLength: 10,  //更改初始页面长度 (每页的行数)
   processing: true, //显示正在处理字符串
   serverSide: false, // 服务器模式,这一点非常奇怪*
   ordering: true,   // 是否启用Datatables排序
   searching: false,  // 开启搜索
   autoWidth: false,
   zeroRecords: "没有查询数据",
   destroy: true,   // 从当前上下文销毁掉Datatables对象 (妹搞懂)
   pagingType: "input", // 分页按钮种类显示选项
   language: {
    url: "cn.txt" // 本地化
   },
   dom: "tr<'row-fluid'<'span6'i><'span6'p>>", // 按什么顺序定义表的控制元素在页面上出现(妹搞懂)
   ajax: {
    url: "/url",
    type: "post", // ajax请求的类型 **
    data: function () {
     return that.getQueryParams(); // ajax的参数
    }
   },
   columns: [
    {title: "id", data: "id", orderable: true},
    {title: "uid", data: "uid", orderable: false},
    {title: "昵称", data: "nick", orderable: false},
    {title: "姓名", data: "name", orderable: false},
    {title: "电话", data: "tel", orderable: false},
    {title: "申请时间", data: "stimeshow", orderable: true},
    {title: "状态", data: "statshow", orderable: false},
    {
     title: "操作", orderable: false, render: function (data,type,full) {
     return '<button id="msgsndButton" class="msgsnd glyphicon glyphicon-comment"></button>' +
      ' <button id="forbidButton" class="forbid glyphicon glyphicon-thumbs-down"></button>'+
      '<input type="hidden" value="'+full.id+'"/>';
    }
    }
   ]
  });

后台传回的数据一定要是一个map,key是 "data",value 是数据(如果数据是List要 toArray()),其中 data 也是 DataTables 的参数之一,表示表格要显示的数据,所以你可以在这个map中放上其他的表格参数,只要把key设置为参数名就可以了。

*:配置中serverSide开启服务器模式,在工作使用中表格的数据是通过ajax从后台获取,就理所当然地打开了这个模式,但是表格对某一列排序的功能就失效了,而随后我关闭了这一模式,发现就可以对表格中的列进行排序,表格的数据还是从服务器获取……所以这个模式还有待研究

**: 在项目中后台controller接收的参数是数组,ajax的请求包含复杂参数的时候,请求的类型一定要是post;

三、进阶功能
1、隐藏列
可以通过 "columns.visible" 属性规定列是否显示,但是这样就不能获取此列的值,如果要隐藏id列,又要根据id触发事件就办不到了 = =,后来查API后想了一个笨办法,可以借助 columns.render 属性,用法如下:

{
  title: "操作", orderable: false, render: function (data,type,full) {
  return '<input type="hidden" value="'+full.id+'"/>';
  }
}

注意 render 后的函数有三个参数,data/type/full,其中full参数是行的所有数据(官网在此注明:只是行中的数据,而不是data属性的值,所以就算data中有你想要的值,但你没有给他一列的话也是获取不到的),可以在render中直接使用你想隐藏的值,如果表格外部要引用这个值,可以在render中组装一个隐藏的<input>,外部就可以获取到了,不过这种方法真的非常蠢,如果你有好的方法,请一定要告诉我。

2、输入页码跳转页面
我们可以通过 pagingType 属性来设置表格分页按钮样式,但是DataTables的几个默认样式都没有项目中需要的输入页码进行跳转的样式。但是在官网的 plug-in 页中介绍了几种分页按钮的插件,其中的 input 分页插件就可以满足我们的需求,只要引入插件的js,再将 pagingType 的值改为 "input" 就可以了。js文件的 CDN 是:

//cdn.datatables.net/plug-ins/1.10.11/pagination/input.js

以上就是本文的全部内容,希望对大家的学习有所帮助。

DataTables 官网

Javascript 相关文章推荐
JS 文件本身编码转换 图文教程
Oct 12 Javascript
基于jquery实现的服务器验证控件的启用和禁用代码
Apr 27 Javascript
setTimeout和setInterval的区别你真的了解吗?
Mar 31 Javascript
JavaScript高级程序设计(第3版)学习笔记5 js语句
Oct 11 Javascript
获取select元素被选中的文本内容的js代码
Jan 29 Javascript
打造个性化的功能强大的Jquery虚拟键盘(VirtualKeyboard)
Oct 11 Javascript
dreamweaver 8实现Jquery自动提示
Dec 04 Javascript
整理Javascript函数学习笔记
Dec 01 Javascript
浅谈js函数中的实例对象、类对象、局部变量(局部函数)
Nov 20 Javascript
vue mint-ui学习笔记之picker的使用
Oct 11 Javascript
深入浅析javascript函数中with
Oct 28 Javascript
解决Vue项目中tff报错的问题
Oct 21 Javascript
基于javascript实现tab切换特效
Mar 29 #Javascript
基于javascript实现简单的抽奖系统
Apr 15 #Javascript
基于javascript实现九宫格大转盘效果
May 28 #Javascript
全屏js头像上传插件源码高清版
Mar 29 #Javascript
js闭包引起的事件注册问题介绍
Mar 29 #Javascript
使用postMesssage()实现跨域iframe页面间的信息传递方法
Mar 29 #Javascript
js滚动条平滑移动示例代码
Mar 29 #Javascript
You might like
php巧获服务器端信息
2006/12/06 PHP
PHP远程连接MYSQL数据库非常慢的解决方法
2008/07/05 PHP
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
2014/05/04 PHP
jquery pagination插件实现无刷新分页代码
2009/10/13 Javascript
Javascript 命名空间模式
2013/11/01 Javascript
JS获取地址栏参数的几种方法小结
2014/02/28 Javascript
JS判断浏览器是否支持某一个CSS3属性的方法
2014/10/17 Javascript
Javascript前端UI框架Kit使用指南之Kitjs简介
2014/11/28 Javascript
jQuery中:only-child选择器用法实例
2015/01/03 Javascript
WEB前端开发都应知道的jquery小技巧及jquery三个简写
2015/11/15 Javascript
理解 JavaScript Scoping &amp; Hoisting(二)
2015/11/18 Javascript
如何利用AngularJS打造一款简单Web应用
2015/12/05 Javascript
JS操作input标签属性checkbox全选的实现代码
2017/03/02 Javascript
Vuex和前端缓存的整合策略详解
2017/05/09 Javascript
js+html5实现半透明遮罩层弹框效果
2020/08/24 Javascript
vue如何使用 Slot 分发内容实例详解
2017/09/05 Javascript
JavaScript实现修改伪类样式
2017/11/27 Javascript
详解Angular调试技巧之报错404(not found)
2018/01/31 Javascript
JS中的回调函数实例浅析
2018/03/21 Javascript
vue动态路由配置及路由传参的方式
2018/05/23 Javascript
angularJs使用ng-repeat遍历后选中某一个的方法
2018/09/30 Javascript
Vue实现商品详情页的评价列表功能
2019/09/04 Javascript
vue路由跳转传递参数的方式总结
2020/05/10 Javascript
python+matplotlib绘制简单的海豚(顶点和节点的操作)
2018/01/02 Python
Python3多线程爬虫实例讲解代码
2018/01/05 Python
Python根据服务获取端口号的方法
2019/09/25 Python
利用Python的turtle库绘制玫瑰教程
2019/11/23 Python
python实现逻辑回归的示例
2020/10/09 Python
详解BeautifulSoup获取特定标签下内容的方法
2020/12/07 Python
html+css3实现的登录界面
2020/12/09 HTML / CSS
Application Cache未缓存文件无法访问无法加载问题
2014/05/31 HTML / CSS
澳大利亚现代波西米亚风格女装网站:Bohemian Traders
2018/04/16 全球购物
女孩每月服装订阅盒:kidpik
2019/04/17 全球购物
三好学生自我鉴定
2013/12/17 职场文书
证婚人经典证婚词
2014/01/09 职场文书
2015年全国“爱牙日”宣传活动总结
2015/03/23 职场文书