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 相关文章推荐
基于jQuery的ajax功能实现web service的json转化
Aug 29 Javascript
ajax java 实现自动完成功能
Dec 19 Javascript
Javascript/Jquery——简单定时器的多种实现方法
Jul 03 Javascript
使图片旋转的3种解决方案
Nov 21 Javascript
JS实现的一个简单的Autocomplete自动完成例子
Apr 16 Javascript
JS图片放大效果简单实现代码
Sep 08 Javascript
学习vue.js条件渲染
Dec 03 Javascript
React入门教程之Hello World以及环境搭建详解
Jul 11 Javascript
React进阶学习之组件的解耦之道
Aug 07 Javascript
JS与HTML结合实现流程进度展示条思路详解
Sep 03 Javascript
vue-cli创建的项目,配置多页面的实现方法
Mar 15 Javascript
vue.js实现简单的计算器功能
Feb 22 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的命名空间(二)
2018/02/21 PHP
javascript之bind使用介绍
2011/10/09 Javascript
解析Jquery的LigerUI如何实现文件上传
2013/07/09 Javascript
JavaScript限定复选框的选择个数示例代码
2013/08/25 Javascript
javascript中为某个元素指定事件的三种方式
2014/08/07 Javascript
修改或扩展jQuery原生方法的代码实例
2015/01/13 Javascript
jQuery实现企业网站横幅焦点图切换功能实例
2015/04/30 Javascript
基于JS实现Android,iOS一个手势动画效果
2016/04/27 Javascript
详解Nodejs的timers模块
2016/12/22 NodeJs
jQuery常用选择器详解
2017/07/17 jQuery
node.js 核心http模块,起一个服务器,返回一个页面的实例
2017/09/11 Javascript
一步快速解决微信小程序中textarea层级太高遮挡其他组件
2019/03/04 Javascript
js实现tab栏切换效果
2020/08/02 Javascript
[00:32]10月24、25日 辉夜杯外卡赛附加赛开赛!
2015/10/23 DOTA
[53:10]Secret vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python创建xml的方法
2015/03/10 Python
简单理解Python中基于生成器的状态机
2015/04/13 Python
Python实现全角半角字符互转的方法
2016/11/28 Python
视觉直观感受若干常用排序算法
2017/04/13 Python
Python正则抓取新闻标题和链接的方法示例
2017/04/24 Python
Python实现的堆排序算法原理与用法实例分析
2017/11/22 Python
python 3.6.5 安装配置方法图文教程
2018/09/18 Python
详解pandas.DataFrame中删除包涵特定字符串所在的行
2019/04/04 Python
python基于递归解决背包问题详解
2019/07/03 Python
python 使用while写猜年龄小游戏过程解析
2019/10/07 Python
Python实现随机取一个矩阵数组的某几行
2019/11/26 Python
Mac PyCharm中的.gitignore 安装设置教程
2020/04/16 Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
2020/04/24 Python
雅萌 (YA-MAN) :日本美容家电领域的龙头企业
2017/05/12 全球购物
Python使用openpyxl复制整张sheet
2021/03/24 Python
竞选部门副经理的自荐书范文
2014/02/11 职场文书
文明家庭先进事迹材料
2014/05/14 职场文书
工作保证书
2015/01/17 职场文书
护士医德医风心得体会
2016/01/25 职场文书
Golang 正则匹配效率详解
2021/04/25 Golang
vue.js Router中嵌套路由的实用示例
2021/06/27 Vue.js