TableSorter Pager(jQuery)分页计数异常问题求助
Hey there, let's dig into this TableSorter Pager row count issue you're facing—super frustrating when the plugin's numbers don't match reality! Here are some targeted troubleshooting steps and fixes to try out:
1. Fix Table Structure Inconsistencies
TableSorter Pager counts rows directly under the <tbody> element by default. If your tables have:
- Extra nested
<tbody>tags - Data rows accidentally placed in
<thead>or<tfoot> - Hidden rows (via CSS
display: noneor jQuery methods) that aren't accounted for in your config
This will throw off the row count. First, verify all data rows live in a single <tbody> tag, and run this in your browser console to check the actual DOM row count:
// Replace with your table ID $('#actions_table tbody tr').length
Compare this number to what the pager displays—if they don't match, your DOM structure is the culprit.
2. Adjust Pager Count Configuration
The Pager plugin has settings that control how it counts rows. Try explicitly setting these options when initializing the pager to avoid unexpected behavior:
$('table').tablesorter({ theme: 'bootstrap', headerTemplate: '{content} {icon}', widgets: ["uitheme", "zebra"] // Make sure your widget list is complete }).tablesorterPager({ container: $('.pager'), // Target your pager container countChildRows: false, // Ignore nested rows inside table cells removeRows: false, // Disable row removal if you're using dynamic content output: '{startRow} - {endRow} / {totalRows}' // Ensure your output uses {totalRows} correctly });
3. Avoid Global Table Selectors
You mentioned using $('table').tablesorter()—if you're initializing multiple tables with this global selector, conflicts can arise. Instead, target each table individually by ID to isolate their configurations:
// First table $('#actions_table').tablesorter({ theme: 'bootstrap', headerTemplate: '{content} {icon}', widgets: ["uitheme", "zebra"] }).tablesorterPager({ container: $('#actions_pager') }); // Second table $('#second_table').tablesorter({ theme: 'bootstrap', headerTemplate: '{content} {icon}', widgets: ["uitheme", "zebra"] }).tablesorterPager({ container: $('#second_pager') });
4. Ensure Proper Initialization Timing
If your tables are dynamically loaded (e.g., via AJAX), initializing TableSorter before the table is fully rendered will lead to incorrect counts. Wrap your initialization code in the appropriate callback:
- For static DOM: Keep it inside
$(function() { ... }) - For AJAX-loaded tables: Place it in the AJAX
successorcompletecallback, or use a mutation observer to detect when the table is added to the DOM.
5. Check Plugin Version Compatibility
Outdated or mismatched versions of TableSorter and its Pager plugin can cause bugs like this. Ensure you're using the latest compatible versions, and check the plugin's release notes for any reported row-counting fixes.
内容的提问来源于stack exchange,提问作者Matthieu Barthe

