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 相关文章推荐
JavaScript-世界上误解最深的语言分析
Aug 12 Javascript
JQuery入门——移除绑定事件unbind方法概述及应用
Feb 05 Javascript
JS动态添加option和删除option(附实例代码)
Apr 01 Javascript
javascript中的delete使用详解
Apr 11 Javascript
js对象与打印对象分析比较
Apr 23 Javascript
jQuery中closest()函数用法实例
Jan 07 Javascript
jquery实现鼠标滑过小图时显示大图的方法
Jan 14 Javascript
angularJS提交表单(form)
Feb 09 Javascript
TypeScript入门-接口
Mar 30 Javascript
VUE接入腾讯验证码功能(滑块验证)备忘
May 07 Javascript
解决layUI的页面显示不全的问题
Sep 20 Javascript
解析原生JS getComputedStyle
May 25 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
使用Sphinx对索引进行搜索
2013/06/25 PHP
Laravel中为什么不使用blpop取队列详析
2018/08/01 PHP
PHP类与对象后期静态绑定操作实例详解
2018/12/20 PHP
PHP使用反向Ajax技术实现在线客服系统详解
2019/07/01 PHP
jQuery学习笔记 更改jQuery对象
2012/09/19 Javascript
JavaScript的21条基本知识点
2014/03/04 Javascript
jquery插件bxslider用法实例分析
2015/04/16 Javascript
在HTML中插入JavaScript代码的示例
2015/06/03 Javascript
JS+HTML5手机开发之滚动和惯性缓动实现方法分析
2016/06/12 Javascript
jQuery.uploadify文件上传组件实例讲解
2016/09/23 Javascript
总结Javascript中数组各种去重的方法
2016/10/04 Javascript
jQuery学习笔记之入门
2016/12/14 Javascript
jQuery实现文字自动横移
2017/01/08 Javascript
Angularjs+bootstrap+table多选(全选)支持单击行选中实现编辑、删除功能
2017/03/27 Javascript
JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法
2017/03/30 Javascript
jQuery幻灯片插件owlcarousel参数说明中文文档
2018/02/27 jQuery
Vue-Router基础学习笔记(小结)
2018/10/15 Javascript
说说如何使用Vuex进行状态管理(小结)
2019/04/14 Javascript
mpvue实现微信小程序快递单号查询代码
2020/04/03 Javascript
Node.js API详解之 readline模块用法详解
2020/05/22 Javascript
Vue组件生命周期运行原理解析
2020/11/25 Vue.js
JavaScript实现筛选数组
2021/03/02 Javascript
python使用nntp读取新闻组内容的方法
2015/05/08 Python
Python Socket传输文件示例
2017/01/16 Python
Python实现的计算马氏距离算法示例
2018/04/03 Python
python使用Plotly绘图工具绘制柱状图
2019/04/01 Python
python的命名规则知识点总结
2019/10/04 Python
windows下Python安装、使用教程和Notepad++的使用教程
2019/10/06 Python
Python读取xlsx数据生成图标代码实例
2020/08/12 Python
SmartBuyGlasses美国官网:太阳眼镜和眼镜
2017/08/20 全球购物
合作协议书范本
2014/04/17 职场文书
旅游专业毕业生自荐书
2014/06/30 职场文书
缓刑期间思想汇报范文
2014/10/10 职场文书
2015年社区党务工作总结
2015/04/21 职场文书
教师学习中国梦心得体会
2016/01/05 职场文书
阿里云服务器部署RabbitMQ集群的详细教程
2022/06/01 Servers