วัน: 4 กรกฎาคม 2026

jQuery: TabulatorPlusjQuery: TabulatorPlus

สำหรับการใช้งานร่วมกับ jQuery นั้น จะมีความตรงไปตรงมาสูงมาก เพราะ Tabulator ถูกออกแบบมาให้ทำงานกับ DOM โดยตรงได้ดีอยู่แล้วครับ

ในโลกของ jQuery เราจะเก็บ Instance ไว้ในตัวแปรธรรมดา หรือจะใช้ .data () ของ jQuery เพื่อผูก Instance ไว้กับ Element นั้น ๆ ก็ได้ เพื่อให้เรียกใช้ซ้ำได้จากทุกที่ครับ

$ (document) .ready (function () { // 1. กำหนดตัวแปรสำหรับเก็บ Instance (Reused Instance) let tableInstance = null; const $tableEl = $ ("#my-table") ; // --- FUNCTION: INITIALIZE (การสร้างครั้งแรก) --- function initTable (initialData) { // ตรวจสอบเพื่อไม่ให้สร้างซ้อน (Idempotent) if (tableInstance) return; tableInstance = new TabulatorPlus ($tableEl[0], { data: initialData, columns: [ { title: "ID", field: "id", width: 50 }, { title: "Product", field: "product", width: 200 }, { title: "Price", field: "price", formatter: "money" }, ], }, "jquery-storage-key") ; // หรือจะเก็บไว้ใน jQuery Data เพื่อเรียกใช้จากที่อื่นก็ได้ $tableEl.data ("tabulator-instance", tableInstance) ; } // --- FUNCTION: REFRESH (อัปเดตข้อมูล) --- window.refreshTableData = function (newData) { if (tableInstance) { console.log ("Refreshing data...") ; // ใช้ .setData () เพื่ออัปเดตข้อมูลโดยไม่ต้องวาดตารางใหม่ทั้งหมด tableInstance.setData (newData) ; } }; // --- FUNCTION: ACTION (เรียกใช้ Method) --- $ ("#btn-clear-filter") .on ("click", function () { if (tableInstance) { tableInstance.clearFilter (true) ; } }) ; // --- FUNCTION: UNMOUNT / DESTROY (การล้างข้อมูล) --- window.destroyTable = function () { if (tableInstance) { console.log ("Destroying table...") ; // ล้าง Event และ DOM ที่ Tabulator สร้างขึ้น tableInstance.destroy () ; tableInstance = null; $tableEl.removeData ("tabulator-instance") ; } }; // ทดลองรัน initTable ([ { id: 1, product: "Laptop", price: 35000 }, { id: 2, product: "Mouse", price: 1200 } ]) ;
}) ;

💡 คำอธิบายสำหรับการใช้งานแบบ jQuery

  • Reused Instance: ผมแนะนำให้ใช้ตัวแปรแบบ let ในขอบเขต ที่เหมาะสม หรือใช้ $el.data ('name', instance) ซึ่งเป็นท่ามาตรฐานของ jQuery Plugin เพื่อให้ฟังก์ชันอื่น ๆ ในหน้าเว็บสามารถเข้าถึง Instance เดียวกันได้
  • Refresh: การเรียก tableInstance.setData (data) ใน jQuery จะทำงานได้เร็วมาก และช่วยรักษาสถานะการเลื่อน ของผู้ใช้ไว้ได้
  • Unmount / Destroy: ใน jQuery มักจะไม่ค่อยมีการ Unmount อัตโนมัติเหมือน Framework สมัยใหม่ ดังนั้นควรเรียก .destroy () เมื่อคุณทำการลบ Element นั้นทิ้งด้วย .remove () เพื่อป้องกัน Memory Leak ครับ
  • Accessing DOM: สังเกตว่าผมส่ง $tableEl[0] เข้าไปใน Constructor เพราะ TabulatorPlus ต้องการ Pure DOM Element ไม่ใช่ jQuery Object ครับ

เปรียบเทียบภาพรวม

ฟีเจอร์Framework jQuery
Lifecycleจัดการผ่าน Hooks จัดการเองด้วยฟังก์ชัน
Data Bindingอัปเดตผ่าน Props / Watchอัปเดตผ่านฟังก์ชัน setData ()
Stateเก็บใน Component State / Refเก็บในตัวแปร Global หรือ .data ()

การทำ Wrapper แบบ TabulatorPlus นี้ช่วยให้คุณเขียนโค้ด jQuery ได้สะอาดขึ้นมาก เพราะไม่ต้องใส่ Config ยาว ๆ ทุกครั้งที่สร้างตารางครับ


อ่านเพิ่มเติม