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

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

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

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

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

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

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. 基礎(chǔ) HTML 結(jié)構(gòu)

標(biāo)準(zhǔn)表格,必須包含 <thead>(表頭)

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

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

方式1:靜態(tài)本地?cá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: "手機(jī)號(hào)" },
      { data: null, title: "操作" } // 無綁定字段,放按鈕
    ]
  });
});

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

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

前端代碼

$('#myTable').DataTable({
  // 開啟服務(wù)端分頁(大數(shù)據(jù)必開)
  serverSide: true,
  // 請(qǐng)求接口
  ajax: {
    url: "/api/getList",
    type: "POST"
  },
  columns: [
    { data: "id" },
    { data: "name" },
    { data: "phone" },
    // 自定義單元格:渲染按鈕、HTML
    { 
      data: null,
      render: function(row){
        // row = 當(dāng)前行所有字段
        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. 分頁相關(guān)
  paging: true,        // 開啟分頁(默認(rèn)true)
  pageLength: 10,      // 每頁條數(shù)
  lengthMenu: [5,10,20,50], // 每頁條數(shù)選擇器

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

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

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

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

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

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

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

{
  data: "status",
  render: function(val){
    // val = 當(dāng)前字段值
    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 方法(表格操作)

先獲取表格實(shí)例:

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

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

// 本地?cái)?shù)據(jù) / 前端分頁 刷新
table.draw();

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

2. 清空表格

table.clear().draw();

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

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

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

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

5. 跳轉(zhuǎn)指定頁

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

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

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

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

七、搭配擴(kuò)展:dataTables.treeGrid 樹形表格

整合寫法(完整可運(yùn)行)

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

八、常見坑 & 解決方案

  1. 表格樣式錯(cuò)亂、列寬異常

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

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

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

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

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

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

九、極簡總結(jié)

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

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

相關(guān)文章

最新評(píng)論

吉林省| 石门县| 旅游| 新巴尔虎右旗| 百色市| 贵南县| 中卫市| 阳东县| 新田县| 布拖县| 札达县| 临武县| 洪湖市| 尤溪县| 鸡泽县| 武山县| 淳化县| 上虞市| 神池县| 开江县| 博罗县| 大同市| 汤阴县| 延长县| 依兰县| 安宁市| 盐池县| 城市| 沅江市| 扶绥县| 平乡县| 漳浦县| 陆丰市| 赫章县| 甘孜县| 寻甸| 锡林郭勒盟| 铜梁县| 通渭县| 昌都县| 工布江达县|