在项目中使用了dataTables 插件,学习整理一下。

  dataTables 的官方中文网站 http://www.datatables.club

  引入文件:

  所有的都要引入 jq文件

  1. dataTables 的样式

  <link rel="stylesheet" href="jquery.dataTables.css">

  <script src="jquery.dataTable.js">

  2. bootstrap 风格的dataTables

  <link rel="stylesheet" href="bootstrap.css">

  <link rel="stylesheet" href="dataTables.bootstrap.css">

  <script src="bootstrap.js"> 

  <script src="jquery.dataTable.js">

  <script src="dataTable.bootstrap.js">

  HTML 代码

 1 <table id="example" width="100%" class="table table-striped table-bordered">
2 <thead>
3 <tr>
4 <th>编码</th>
5 <th>职位</th>
6 <th>姓名</th>
7 <th>状态</th>
8 <th>项目</th>
9 <th>机构</th>
10 <th>操作</th>
11 </tr>
12 </thead>
13 </table>

 JS 代码基本配置

  1 var lang = {
2 "sProcessing": "处理中...",
3 "sLengthMenu": "每页 _MENU_ 项",
4 "sZeroRecords": "没有匹配结果",
5 "sInfo": "当前显示第 _START_ 至 _END_ 项,共 _TOTAL_ 项。",
6 "sInfoEmpty": "当前显示第 0 至 0 项,共 0 项",
7 "sInfoFiltered": "(由 _MAX_ 项结果过滤)",
8 "sInfoPostFix": "",
9 // "sSearch": "本地搜索:",
10 "sUrl": "",
11 "sEmptyTable": "暂无数据",
12 "sLoadingRecords": "载入中...",
13 "sInfoThousands": ",",
14 "oPaginate": {
15 "sFirst": "首页",
16 "sPrevious": "上页",
17 "sNext": "下页",
18 "sLast": "末页",
19 "sJump": "跳转"
20 },
21 "oAria": {
22 "sSortAscending": ": 以升序排列此列",
23 "sSortDescending": ": 以降序排列此列"
24 }
25 };
26
27 $('#example').DataTable({
28 "processing" : true, //DataTables载入数据时,是否显示进度条
29 "serverSide": true, // 开启服务端模式
30 "language": lang, //提示信息
31 "autoWidth": false, //自适应宽度,
32 "sScrollY" : 450, //DataTables的高
33 "sScrollX" : 820, //DataTables的宽
34 "columnDefs": [
35 {"targets": 0, "width": "10%"}, // 设置第一列的宽度
36 {"targets": 1, "width": "10%"},
37 {"targets": 2, "width": "10%"},
38 {"targets": 3, "width": "10%"},
39 {"targets": 4, "width": "20%"},
40 {"targets": 5, "width": "20%"},
41 {"targets": 6, "width": "20%"}
42 ],
43 "lengthMenu": [10, 20, 30], // 显示每页显示的条数
44 "stripeClasses": ["odd", "even"], // 为奇偶行添加样式
45 "searching": true, // 是否允许开启本地检索功能
46 "bFilter": false, // 去掉 搜索框
47 "paging": true, // 是否开启本地分页
48 "lengthChange": true, //是否允许产品改变表格每页显示的记录数
49 "info": true, // 控制是否显示表格左下角的信息
50 "bSort": false, // 禁止排序
51 "deferRender": true, // 延迟渲染
52 "pageLength": 10, // 每页显示的条数
53 //跟数组下标一样,第一列从0开始,这里表格初始化时,
54 "order": [2, 'asc'], //asc升序 desc降序 // 下标为2,第三列 生序排列
55 "aoColumnDefs": [{
56 "orderable": false,// 指定列不参与排序
57 "aTargets": [1,3,4,5,6] // 指定 下标为[1,3,4,5,6]的不排序
58 }],
59 "initComplete": function () { // 给每列添加下拉搜索
60 var api = this.api();
61 api.columns().indexes().flatten().each(function (i) {
62 if (i != 0 && i != 2 && i != 6) { // 第1,3,7不添加,其余的添加
63 var column = api.column(i);
64 var select = $('<select><option value=""></option></select>')
65 .appendTo($(column.header())) // 显示在table中最上面在thead里面
66 .on('change', function () {
67 var val = $.fn.dataTable.util.escapeRegex(
68 $(this).val()
69 );
70 column
71 .search(val ? val : '', true, false)
72 .draw();
73 });
74
75 column.data().unique().sort().each(function (d, j) {
76 var text = $(d).html(); // 获取 span 里面的 text
77 var val = $(d).attr("value"); // 获取span 里面的自定义属性 value
78 if(text != null && text.trim() != "" && val != null && text.trim() != ""){
79 select.append('<option value="' + val + '">' + text + '</option>')
80 }
81
82 });
83 }
84
85 });
86 },
87 "ajax": { // ajax 请求数据
88 "url": "请求路径",
89 "type": "get"
90 },
91 "columns":[
92 {data: name}(后台返回的字段名), // 有几列就解析几次
93 data: tell(后台返回的字段名),
94 ...
95 // 还可以写
96 //{
97 // "data": function (e) {
98 // return e.name;
99 // }
100 // },
101
102 ]
103
104
105 });

给每一列添加下拉搜索的方法 (2)官方

  首先在html中添加

 1 <tfoot>
2 <tr>
3 <th></th>
4 <th></th>
5 <th></th>
6 <th></th>
7 <th></th>
8 <th></th>
9 </tr>
10 </tfoot>

  js代码

 1 initComplete: function () {
2             var api = this.api();
3             api.columns().indexes().flatten().each( function ( i ) {
4                 var column = api.column( i );
5                 var select = $('<select><option value=""></option></select>')
6                     .appendTo( $(column.footer()).empty() ) // 给tfoot里面添加select
7                     .on( 'change', function () {
8                         var val = $.fn.dataTable.util.escapeRegex(
9                             $(this).val()
10                         );
11                         column
12                             .search( val ? '^'+val+'$' : '', true, false )
13                             .draw();
14                     } );
15                 column.data().unique().sort().each( function ( d, j ) {
16                     select.append( '<option value="'+d+'">'+d+'</option>' )
17                 } );
18             } );
19         }

  给每列添加自定义属性

1 // 在 "columns" 下面添加
2 createdRow: function (row, data, index) {
3 // 给每列添加 自定义属性 name
4 $(row).attr('name',data.name);
5 }

  给每列添加点击事件

  $('#example  tbody').on( 'click', 'tr', function () { }) ;

  自定义的分页 ,只给后台传指定的参数

  length   // 页面显示的条数,每页显示多少条、

  start    //  开始的记录序号

  draw    //  当前页面

 1 "ajax": function (data, callback, settings) {
2 //封装请求参数
3 var param = {};
4 param.length = data.length;//页面显示记录条数,在页面显示每页显示多少项的时候
5 param.start = data.start;//开始的记录序号
6 param.draw = data.draw;//当前页码
7
8 //ajax请求数据
9 $.ajax({
10 type: "get",
11 url: "请求路径",
12 cache: false, //禁用缓存
13 data: param,
14 dataType: "json",
15 success: function (result) {
16 //封装返回数据
17 var returnData = {};
18 returnData.draw = result.data.draw;//这里直接自行返回了draw计数器,应该由后台返回
19 returnData.recordsTotal = result.data.recordsTotal;//返回数据全部记录
20 returnData.recordsFiltered = result.data.recordsFiltered;//后台不实现过滤功能,每次查询均视作全部结果
21 returnData.data = result.data.data;//返回的数据列表
22 //调用DataTables提供的callback方法,代表数据已封装完成并传回DataTables进行渲染
23 //此时的数据需确保正确无误,异常判断应在执行此回调前自行处理完毕
24 callback(returnData);
25 }
26 });
27 },

dataTables 插件学习整理的更多相关文章

  1. TweenMax学习整理--特有属性

    TweenMax学习整理--特有属性   构造函数:TweenMax(target:Object, duration:Number, vars:Object) target:Object -- 需要缓 ...

  2. js数组学习整理

    原文地址:js数组学习整理 常用的js数组操作方法及原理 1.声明数组的方式 var colors = new Array();//空的数组 var colors = new Array(3); // ...

  3. [jQuery]jQuery DataTables插件自定义Ajax分页实现

    前言 昨天在博客园的博问上帮一位园友解决了一个问题,我觉得有必要记录一下,万一有人也遇上了呢. 问题描述 园友是做前端的,产品经理要求他使用jQuery DataTables插件显示一个列表,要实现分 ...

  4. HttpClient学习整理

    HttpClient简介HttpClient 功能介绍    1. 读取网页(HTTP/HTTPS)内容    2.使用POST方式提交数据(httpClient3)    3. 处理页面重定向    ...

  5. uexQQ插件学习心得

    uexQQ插件学习心得 uexQQ插件的作用:通过qq可以分享图文,音乐,应用到相应的qq空间.支持手机客户端分享和手机webQQ分享.下面我们就来看一看他的一些方法. 我们先说一下分享的步骤,这个步 ...

  6. emmet插件学习,练习中遇到一些问题

    emmet插件学习:帮助提高敲代码效率的插件 参考文献:Emmet(Zen coding)HTML代码使用技巧七则http://www.wzsky.net/html/Website/htmlcss/1 ...

  7. bootstrap插件学习

    转自http://v3.bootcss.com/javascript/ bootstrap javascript插件学习 模态框 打开模态框 <button type="button& ...

  8. Jquery插件学习

    前端开发也工作了一段时间,Jquery代码页写了很多,但是都是些的很零散的,不是很好用,网上看了很多人写的Jquery 很好用,而且到每个项目中都可以使用, 本人就感觉很好奇他们是怎么做到的呢,于是自 ...

  9. jquery.dataTables插件使用例子详解

    DataTables是一个jQuery的表格插件.这是一个高度灵活的工具,依据的基础逐步增强,这将增加先进的互动控制,支持任何HTML表格 效果图 代码 <!doctype html> & ...

随机推荐

  1. Ubuntu16.04 部署配置GO语言开发环境 & 注意事项

    1. 安装GO 安装go语言包: $ curl -O https://storage.googleapis.com/golang/go1.10.1.linux-amd64.tar.gz   下载完成后 ...

  2. SmartSql Map

    SmartSqlMap 属性 说明 Scope 域,用于SqlMap定义Sql声明范围 Statement标签 属性 说明 Id 唯一性编号 Cache 缓存策略编号,引用自Cache标签 State ...

  3. XPath和CssSelector定位总结

    1. 介绍XPath和CssSelector 2. XPath有哪些方式 2.1 通过XPath语法 2.2 Contains关键字 2.3 Start-With 2.4 Or和And关键字 2.5 ...

  4. OpenCV+TensorFlow实现自定义手写图像识别

    完整版请点击链接:https://mp.weixin.qq.com/s/5gHXGmLbtO7m3dOFrDUiHQ    或微信关注“大数据技术宅” 继用TensorFlow教你做手写字识别(准确率 ...

  5. C#知识拾遗

    参数验证方式 1.    一般方法 1.1 手动验证 最为普遍常见,略. 1.2 使用扩展方法验证 在C#3.0 中,引入了扩展方法,可以以一种更优雅的方式来进行参数验证,如: //参数辅助类 pub ...

  6. glibc溢出提权CVE-2018-1000001总结

    遇到了好几个centos6.5,一直尝试想提权.暂未成功,靶机内核:2.6.32-696.18.7.el6.x86_64. glibc版本:ldd (GNU libc) 2.12 目前编译过程中都发现 ...

  7. 微信H5页面 会被软键盘顶起来

    问题描述:H5页面在微信中打开,input输入框获取焦点时,页面被软键盘顶上去:关闭软键盘时,页面不会自动下来(恢复初始状态) H5页面在微信中初始状态如下图: input输入框获取焦点时,页面被软键 ...

  8. vuex的用法

    https://segmentfault.com/a/1190000015782272

  9. 常见的7种XSS

    1. URL Reflection 当URL以某种方式反映在源代码中时,我们可以添加自己的XSS向量/有效负载.对于PHP页面,可以使用斜杠字符(/)在页面名称之后添加任何内容 http://brut ...

  10. Django用户继承AbstractUser后密码为明文

    Django用户继承AbstractUser后密码为明文 其实本不应该有这个问题,却花了我很久的时间,因为还是初学阶段. 造成这个原因是因为在admin注册的生活没有指定Admin 在app的admi ...