JQuery插件tablesorter表格排序实现过程解析

JQuery插件tablesorter表格排序实现过程解析

简介

tablesorter是一个基于jQuery的表格插件,可以为表格添加排序、分页、高亮、过滤等功能。tablesorter支持多个排序规则,可以对不同列进行不同的排序。本文将详细讲解tablesorter的实现过程。

实现过程

  1. 引入jQuery和tablesorter插件

在html中需要引入jQuery和tablesorter插件的js和css文件,建议直接引入CDN链接

html
<head>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery.tablesorter/2.31.2/js/jquery.tablesorter.min.js"></script>
<link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/jquery.tablesorter/2.31.2/css/theme.blue.min.css" />
</head>

  1. 编写HTML表格

编写一个展示数据的表格,并且给每个th元素添加一些数据属性。

```html

名称 价格 库存
电视 5000 20
冰箱 4000 15

```

此处三个数据属性的含义分别是:

  • data-sorter="false",表示这一列不参与排序
  • data-sorter="digit",表示这一列是数字类型,按数字大小排序
  • data-sorter="text",表示这一列是普通文本类型,按字典序排序

  • 初始化tablesorter

为表格添加tablesorter插件功能,具体操作如下:

javascript
$(function () {
$("#myTable").tablesorter();
});

  1. 重新渲染表格

由于tablesorter对表格DOM做了很多改动,可能会使得一些表格渲染不出来,此时需要调用tablesorter的一个api函数来重新渲染表格。

javascript
$("#myTable").trigger("update");

完整代码展示:

```html




tablesorter实现demo

名称 价格 库存
电视 5000 20
冰箱 4000 15


```

以上就是利用tablesorter实现表格排序的全部步骤。

示例

示例一:使用自定义比较函数

有时候tablesorter默认提供的比较函数无法满足排序需求,需要自己编写比较函数,具体示例如下:

<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
  <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  <script src="https://cdn.bootcdn.net/ajax/libs/jquery.tablesorter/2.31.2/js/jquery.tablesorter.min.js"></script>
  <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/jquery.tablesorter/2.31.2/css/theme.blue.min.css" />
  <title>tablesorter自定义比较函数示例</title>
</head>

<body>
  <table id="myTable" class="tablesorter">
    <thead>
      <tr>
        <th>Name</th>
        <th>Salary</th>
        <th>Birthdate</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>Bob</td>
        <td>$1000</td>
        <td>08/01/1994</td>
      </tr>
      <tr>
        <td>Alice</td>
        <td>$3000</td>
        <td>01/20/1992</td>
      </tr>
      <tr>
        <td>Charlie</td>
        <td>$2000</td>
        <td>12/01/1995</td>
      </tr>
    </tbody>
  </table>
  <script>
    $(function () {
      $.tablesorter.addParser({
        // set a unique id
        id: 'birthdate',
        is: function (s) {
          // return false so this parser is not auto detected
          return false;
        },
        format: function (s, table, cell) {
          // format your data for normalization
          var date = s.split('/');
          var year = parseInt(date[2], 10);
          var month = parseInt(date[1], 10);
          var day = parseInt(date[0], 10);
          return new Date(year, month - 1, day);
        },
        // set type, either numeric or text
        type: 'numeric'
      });
      $("#myTable").tablesorter({
        headers: {
          2: {
            sorter: 'birthdate'
          }
        }
      });
      $("#myTable").trigger("update");
    });
  </script>
</body>
</html>

其中,自定义的比较函数为 $.tablesorter.addParser({...}),示例中定义了一个将格式为"DD/MM/YYYY"的生日字符串转化为日期对象的比较函数,并将此函数应用在第三列上,实现对生日的排序。

示例二:使用分页插件

tablesorter的一个重要功能是分页,使得数据显示更为清晰,具体示例如下:

<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
  <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  <script src="https://cdn.bootcdn.net/ajax/libs/jquery.tablesorter/2.31.2/js/jquery.tablesorter.min.js"></script>
  <script src="https://cdn.bootcdn.net/ajax/libs/jquery.tablesorter/2.31.2/js/jquery.tablesorter.pager.min.js"></script>
  <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/jquery.tablesorter/2.31.2/css/theme.blue.min.css" />
  <title>tablesorter分页插件示例</title>
</head>

<body>
  <table id="myTable" class="tablesorter">
    <thead>
      <tr>
        <th>Name</th>
        <th>Salary</th>
        <th>Birthdate</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>Bob</td>
        <td>$1000</td>
        <td>08/01/1994</td>
      </tr>
      ...
      <tr>
        <td>Jane</td>
        <td>$5000</td>
        <td>06/12/1995</td>
      </tr>
    </tbody>
    <tfoot>
      <tr>
        <td colspan="3" class="pager">
          <button class="first">第一页</button>
          <button class="prev">上一页</button>
          <span class="pagedisplay"></span>
          <button class="next">下一页</button>
          <button class="last">最后一页</button>
          <select class="pagesize">
            <option value="10">10</option>
            <option value="20">20</option>
            <option value="30">30</option>
            <option value="40">40</option>
          </select>
        </td>
      </tr>
    </tfoot>
  </table>
  <script>
    $(function () {
      $("#myTable")
        .tablesorter({
          widthFixed: true,
          widgets: ['zebra', 'filter'],
          headers: {
            2: {
              sorter: 'shortDate'
            }
          } // set second column as a shortDate (filter widget allows multiple types)
        })
        .tablesorterPager({
          container: $(".pager"),
          ajaxUrl: null,
          customAjaxUrl: function (table, url) {
            // 自定义ajax请求数据地址,返回下一页的数据,具体细节请查看tablesorterPager文档
          },
          ajaxProcessing: function (ajax) {
            // filter out pager (numeric) and sorter (text) rows and return the remaining rows
            return [ajax.data[0], ajax.data[1], ajax.data[2]];
          },
          updateArrows: true,
          page: 0,
          output: '{startRow} - {endRow} / {filteredRows} ({totalRows})' // the output string
        });
    });
  </script>
</body>

</html>

对于分页功能,我们需要在HTML结构中添加tfoot元素,其中实现上一步、下一页的按钮点击事件及页码信息显示,具体可以查看 tablesorterPager的文档,此处我们只负责对tablesorter的分页插件api进行配置的演示及说明。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JQuery插件tablesorter表格排序实现过程解析 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • JS forEach和map方法的用法与区别分析

    下面我将详细讲解“JS forEach和map方法的用法与区别分析”的完整攻略。 1. forEach方法的用法与示例 forEach方法的定义 forEach() 方法对数组的每个元素执行一次提供的函数,无返回值。 forEach方法的语法 arr.forEach(callback(currentValue[, index[, array]])[, thi…

    jquery 2023年5月27日
    00
  • 详解AngularJS中的filter过滤器用法

    详解AngularJS中的filter过滤器用法 AngularJS的Filter过滤器用于格式化数据,在视图展示和表达式中使用它们可以使数据变得更加易读。在本文中,我们将详细介绍AngularJS的filter过滤器用法。 filter的基本使用 filter是一个AngularJS内置的过滤器,我们可以在表达式或者标签内使用它进行数据格式化,使用规则如下…

    jquery 2023年5月27日
    00
  • 浅析jquery如何判断滚动条滚到页面底部并执行事件

    下面我会详细讲解如何使用jQuery判断滚动条是否滚动到页面底部,并执行相应的操作。 判断滚动条是否滚动到页面底部的方法 常见的判断滚动条是否滚动到页面底部的方法有两种: 监听滚动事件,在滚动事件中进行判断,当滚动条滚动到底部时执行事件。 监听滚动条触底事件,当滚动条触底时执行事件。 下面分别详细介绍这两种方法。 方法一:监听滚动事件 首先,我们可以监听窗口…

    jquery 2023年5月18日
    00
  • ASP.NET MVC:Filter和Action的执行介绍

    ASP.NET MVC(Model-View-Controller)是一种web应用程序框架,允许开发人员使用ASP.NET编写它。其中Filter和Action是MVC框架的两个重要组成部分。本文将详细讲解Filter和Action的执行流程。 Filter和Action的概念 Filter是指一组钩子,可以在MVC请求的不同生命周期中自定义动作。Filt…

    jquery 2023年5月27日
    00
  • 如何在jQuery UI中销毁一个按钮

    以下是关于如何在 jQuery UI 中销毁一个按钮的完整攻略: 如何在 jQuery UI 中销毁一个按钮 在 jQuery UI 中,可以使用 destroy() 方法来销毁一个按钮。该方法将删除按钮的所有事件处理程序和数据,以及从 DOM 中删除按钮元素。 语法 $(selector).button("destroy"); 其中,s…

    jquery 2023年5月11日
    00
  • jQWidgets jqxTree添加的事件

    以下是关于 jQWidgets jqxTree 添加的事件的完整攻略: jQWidgets jqxTree 添加的事件 jQWidgets jqxTree 提供了多个事件,可以在树形结中的节点添加事件处理程序以响应用户的操作。 事件列表 以下是 jQWidgets jqxTree 中常用的事件: select:当用户一个节点时发。 expand:当用户展开一…

    jquery 2023年5月11日
    00
  • jQWidgets jqxGrid rowsheight属性

    jQWidgets jqxGrid rowsheight属性攻略 jQWidgets 是一个基于 jQuery 的 UI 组件库,提供了丰富的 UI 组件和工具,可用于创建现代化的 Web 应用程序。 jqxGrid 是表格的件,提供了丰富的配置选项和方法。本攻略将详细介绍 jqxGrid 的 rowsheight 属性,该属性用于设置表格行的高度。 row…

    jquery 2023年5月10日
    00
  • 详解webpack引用jquery(第三方模块)的三种办法

    接下来我将详细讲解“详解webpack引用jquery(第三方模块)的三种办法”的完整攻略。 1. 安装jquery模块 首先,我们需要在项目中安装jquery模块。可以使用npm安装: npm install jquery –save 安装完成后,jquery模块会被保存在项目的”node_modules”目录中。 2. 引用jquery模块 在webp…

    jquery 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部