最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

jQuery DataTables 專業(yè)表格插件實用教程

 更新時間:2026年06月17日 09:39:09   作者:學以智用  
DataTables是基于jQuery的專業(yè)表格插件,實現(xiàn)分頁、排序、搜索、篩選、樣式美化、樹形擴展,下面就來具體介紹一下,感興趣的可以了解一下

DataTables 是基于 jQuery 的專業(yè)表格插件,實現(xiàn)分頁、排序、搜索、篩選、樣式美化、樹形擴展(你之前學的 treeGrid),后臺管理系統(tǒng)高頻使用。

一、基礎環(huán)境 & 引入

1. 依賴順序(必須嚴格)

jQuery → DataTables CSS → DataTables JS

<!-- 1. jQuery -->
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.4/dist/jquery.min.js"></script>

<!-- 2. DataTables 樣式 -->
<link rel="stylesheet"  rel="external nofollow" >

<!-- 3. DataTables 腳本 -->
<script src="https://cdn.datatables.net/1.13.6/js/jquery.dataTables.min.js"></script>

2. 基礎 HTML 結構

標準表格,必須包含 <thead>(表頭)

<table id="myTable" class="display" style="width:100%">
  <thead>
    <tr>
      <th>ID</th>
      <th>姓名</th>
      <th>手機號</th>
      <th>操作</th>
    </tr>
  </thead>
  <tbody>
    <!-- 數(shù)據(jù)行(靜態(tài)/動態(tài)渲染) -->
  </tbody>
</table>

二、三種初始化方式(按場景選用)

方式1:靜態(tài)本地數(shù)據(jù)(data 數(shù)組)

適合少量模擬數(shù)據(jù)、測試

$(function(){
  // 模擬數(shù)據(jù)
  var tableData = [
    { id: 1, name: "張三", phone: "13800138000" },
    { id: 2, name: "李四", phone: "13900139000" }
  ];

  $('#myTable').DataTable({
    data: tableData,
    // 列配置:綁定字段、表頭
    columns: [
      { data: "id", title: "ID" },
      { data: "name", title: "姓名" },
      { data: "phone", title: "手機號" },
      { data: null, title: "操作" } // 無綁定字段,放按鈕
    ]
  });
});

方式2:AJAX 異步加載(項目最常用)

后端接口返回 JSON 數(shù)據(jù),自動分頁/渲染

前端代碼

$('#myTable').DataTable({
  // 開啟服務端分頁(大數(shù)據(jù)必開)
  serverSide: true,
  // 請求接口
  ajax: {
    url: "/api/getList",
    type: "POST"
  },
  columns: [
    { data: "id" },
    { data: "name" },
    { data: "phone" },
    // 自定義單元格:渲染按鈕、HTML
    { 
      data: null,
      render: function(row){
        // row = 當前行所有字段
        return `<button class="edit" data-id="${row.id}">編輯</button>
                <button class="del" data-id="${row.id}">刪除</button>`;
      }
    }
  ]
});

后端返回格式(serverSide: true 固定格式)

{
  "draw": 1,
  "recordsTotal": 100,    // 總數(shù)據(jù)條數(shù)
  "recordsFiltered": 100, // 篩選后條數(shù)
  "data": [
    {"id":1,"name":"張三","phone":"13800138000"}
  ]
}

方式3:渲染已有 HTML 表格

頁面已經(jīng)寫好 <tbody> 行,直接初始化即可

$('#myTable').DataTable();

三、核心常用配置(高頻參數(shù))

$('#myTable').DataTable({
  // 1. 分頁相關
  paging: true,        // 開啟分頁(默認true)
  pageLength: 10,      // 每頁條數(shù)
  lengthMenu: [5,10,20,50], // 每頁條數(shù)選擇器

  // 2. 搜索、排序
  searching: true,     // 開啟全局搜索
  ordering: true,      // 開啟列排序
  order: [[0, "desc"]],// 默認排序:第0列 倒序(desc)/正序(asc)

  // 3. 語言漢化(關鍵,默認英文)
  language: {
    "sProcessing": "加載中...",
    "sLengthMenu": "每頁 _MENU_ 條",
    "sZeroRecords": "暫無數(shù)據(jù)",
    "sInfo": "當前 _START_ - _END_ 條,共 _TOTAL_ 條",
    "sInfoEmpty": "暫無數(shù)據(jù)",
    "sSearch": "搜索:",
    "oPaginate": {
      "sFirst": "首頁",
      "sPrevious": "上一頁",
      "sNext": "下一頁",
      "sLast": "末頁"
    }
  },

  // 4. 列配置
  columns: [
    { data: "id", width: "80px" }, // 設置列寬
    { data: "name", orderable: false }, // 禁止當前列排序
    { data: "phone", searchable: false } // 禁止當前列參與搜索
  ],

  // 5. 動態(tài)樹形(結合你之前學的 treeGrid)
  treeGrid: {
    left: 20,
    expandAll: false
  }
});

四、columns.render 單元格自定義(重點)

用來拼接HTML、格式化文本、狀態(tài)轉換

1. 狀態(tài)文字轉換

{
  data: "status",
  render: function(val){
    // val = 當前字段值
    return val === 1 ? "<span style='color:green'>正常</span>" 
                     : "<span style='color:red'>禁用</span>";
  }
}

2. 操作列按鈕

{
  data: null,
  render: function(row){
    return `<button class="btn-edit" data-id="${row.id}">編輯</button>
            <button class="btn-del" data-id="${row.id}">刪除</button>`;
  }
}

五、常用 API 方法(表格操作)

先獲取表格實例:

var table = $('#myTable').DataTable();

1. 重新加載數(shù)據(jù)(增刪改后刷新表格)

// 本地數(shù)據(jù) / 前端分頁 刷新
table.draw();

// AJAX 接口 重新請求數(shù)據(jù)(常用)
table.ajax.reload();

2. 清空表格

table.clear().draw();

3. 銷毀表格(重新初始化前使用)

// 徹底銷毀實例
table.destroy();

4. 獲取當前頁數(shù)據(jù) / 整表數(shù)據(jù)

// 當前頁數(shù)據(jù)
var pageData = table.rows().data();

5. 跳轉指定頁

table.page(2).draw(false); // 跳轉到第3頁(索引從0開始)

六、動態(tài)行事件綁定(結合.on()事件委托)

表格行/按鈕是動態(tài)渲染,必須用事件委托

// 委托給 table,監(jiān)聽內部 .btn-del 點擊
$('#myTable tbody').on('click', '.btn-del', function(){
  // 獲取當前行 id
  var id = $(this).data('id');
  
  // 結合 swal 確認框
  Swal.fire({
    title: "確定刪除?",
    icon: "warning",
    showCancelButton: true
  }).then(res => {
    if(res.isConfirmed){
      $.post("/api/delete", {id:id}, function(){
        Swal.fire("刪除成功","","success");
        table.ajax.reload(); // 刷新表格
      });
    }
  });
});

七、搭配擴展:dataTables.treeGrid 樹形表格

整合寫法(完整可運行)

$('#myTable').DataTable({
  ajax: "/api/getTreeData",
  columns: [
    { defaultContent: "", width: "30px" }, // 樹形圖標列
    { data: "name", title: "名稱" },
    { data: "remark", title: "備注" }
  ],
  // 樹形配置
  treeGrid: {
    left: 20,
    expandAll: false
  },
  // 樹形表格建議關閉分頁
  paging: false
});

八、常見坑 & 解決方案

  1. 表格樣式錯亂、列寬異常

    • 給 table 加 style="width:100%"
    • 初始化放在 DOM 加載完成 $(function(){}) 內部
  2. AJAX 數(shù)據(jù)渲染不出來

    • 檢查接口返回字段名和 columns.data 一致
    • serverSide: true 時,后端必須返回規(guī)定格式(draw/recordsTotal/data)
  3. 動態(tài)按鈕點擊無反應

    • 不要直接 $(".btn").click(),改用事件委托 tbody.on()
  4. 中文搜索亂碼/搜索無效

    • 頁面編碼設為 <meta charset="UTF-8">
    • 后端接口編碼統(tǒng)一 UTF-8
  5. 樹形表格子節(jié)點不顯示

    • 后端數(shù)據(jù)必須包含 children 字段
  6. 重復初始化報錯

    • 重新渲染前先執(zhí)行 table.destroy()

九、極簡總結

  1. 核心三要素:jQuery + 樣式CSS + JS;表格必須帶 <thead>
  2. 兩種模式
    • 前端分頁:data: [] 本地數(shù)組,簡單數(shù)據(jù)用
    • 服務端分頁:serverSide:true + ajax,大數(shù)據(jù)列表必用
  3. 自定義內容:靠 columns.render 渲染按鈕、狀態(tài)、HTML
  4. 動態(tài)元素:事件一律用 on() 委托
  5. 刷新表格:增刪改后調用 table.ajax.reload()
  6. 樹形表格:增加 treeGrid 配置,數(shù)據(jù)帶 children

到此這篇關于jQuery DataTables 專業(yè)表格插件實用教程的文章就介紹到這了,更多相關jQuery DataTables 內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

丹棱县| 西青区| 屯昌县| 潍坊市| 鱼台县| 通榆县| 新竹市| 绥中县| 霸州市| 仁怀市| 井冈山市| 昌邑市| 鄂托克旗| 禄劝| 衡山县| 浦江县| 甘泉县| 阜南县| 怀来县| 株洲县| 清苑县| 左贡县| 洞口县| 南投市| 井冈山市| 浦北县| 房产| 郴州市| 昌宁县| 武义县| 茌平县| 凤翔县| 江西省| 胶州市| 昭平县| 黎平县| 柞水县| 二连浩特市| 揭阳市| 海淀区| 龙游县|