如何使用 table 排序器插件搜索 table 中的项目-Jquery
How to search for items in a table using the table sorter plugin-Jquery
我正在使用 tablesorter 插件和 tablesorter 小部件来搜索 table 中的项目。但是我在尝试设置每页行数时与 tablesorterWidgets.js 文件发生冲突。
js:
var $table = $("#table").tablesorter({
widgets: ['zebra', 'columns', 'filter'],
widthFixed : true,
ignoreCase: true,
widgetOptions : {
filter_columnFilters: false
}
//used for searching specific items in the table
$.tablesorter.filter.bindSearch( $table, $('input.search-sub-accounts'));
items = $("table tbody tr");
perPage = 2;
numItems = items.length;
items.slice(perPage).hide();
然而,它从来没有在 tablesorter widgets 文件中的某个点使用每页编号,它会覆盖每页编号并将其重置为项目的原始长度。
我可以使用任何其他方式从输入字段中搜索项目吗?
http://jsfiddle.net/anLa1how/5/
谢谢!
查看文档,您似乎没有什么问题。
正在jsFiddle 演示以下修复
问题 1:
您正在使用 tablesorter.js Version 2.0.5b with tablesorter.widgets.js v2.23.3
您应该使用每个的最新版本:tablesorter.js v2.23.3 and tablesorter.widgets.js v2.23.3
问题 2:
introduction 状态:
tablesorter is a jQuery plugin for turning a standard HTML table with THEAD and TBODY tags into a sortable table without page refreshes. tablesorter can successfully parse and sort many types of data including linked data in a cell. It has many useful features including:
您的 table 没有所需的 THEAD 或 TBODY 标签。如果检测到 none,则 tablesorter 未初始化,因此无法创建小部件,导致这些错误出现在控制台中:
Uncaught TypeError: Cannot read property 'resizableNoSelect' of undefined
Uncaught TypeError: Cannot read property 'widgetOptions' of undefined
问题 3:
根据 documentation for $.tablesorter.filter.bindSearch
Include a data-column="#" attribute (where # is the column number) in the search input, to specify to which column the search should apply ~ see this demo for a full example. Warning!, if no data-column attribute is added to the input, the input will be ignored.
In v2.15, use a data-column="all" to bind an external any-match search filter....
这意味着你有 <input class="search-items"/>
的地方应该更像 <input class="search-items" type="search" placeholder="Search" data-column="all">
(如果需要,将“全部”更改为列号)
第 4 期:
如您所述,filter
小部件似乎覆盖了分页设置。一个快速解决这个问题的方法是将隐藏元素的调用移动到 onInit:
回调中,并将其放在计时器函数中,这样它就可以让 filter
插件先做它的事情 然后 隐藏其他“页面”。像这样:
setTimeout(function(){ items.hide().slice(startItem - 1, endItem).show();}, 100);
这可能不是最好的方法,但无需深入了解小部件,这确实有效。
我正在使用 tablesorter 插件和 tablesorter 小部件来搜索 table 中的项目。但是我在尝试设置每页行数时与 tablesorterWidgets.js 文件发生冲突。 js:
var $table = $("#table").tablesorter({
widgets: ['zebra', 'columns', 'filter'],
widthFixed : true,
ignoreCase: true,
widgetOptions : {
filter_columnFilters: false
}
//used for searching specific items in the table
$.tablesorter.filter.bindSearch( $table, $('input.search-sub-accounts'));
items = $("table tbody tr");
perPage = 2;
numItems = items.length;
items.slice(perPage).hide();
然而,它从来没有在 tablesorter widgets 文件中的某个点使用每页编号,它会覆盖每页编号并将其重置为项目的原始长度。 我可以使用任何其他方式从输入字段中搜索项目吗?
http://jsfiddle.net/anLa1how/5/
谢谢!
查看文档,您似乎没有什么问题。
正在jsFiddle 演示以下修复
问题 1:
您正在使用 tablesorter.js Version 2.0.5b with tablesorter.widgets.js v2.23.3
您应该使用每个的最新版本:tablesorter.js v2.23.3 and tablesorter.widgets.js v2.23.3
问题 2:
introduction 状态:
tablesorter is a jQuery plugin for turning a standard HTML table with THEAD and TBODY tags into a sortable table without page refreshes. tablesorter can successfully parse and sort many types of data including linked data in a cell. It has many useful features including:
您的 table 没有所需的 THEAD 或 TBODY 标签。如果检测到 none,则 tablesorter 未初始化,因此无法创建小部件,导致这些错误出现在控制台中:
Uncaught TypeError: Cannot read property 'resizableNoSelect' of undefined
Uncaught TypeError: Cannot read property 'widgetOptions' of undefined
问题 3:
根据 documentation for $.tablesorter.filter.bindSearch
Include a data-column="#" attribute (where # is the column number) in the search input, to specify to which column the search should apply ~ see this demo for a full example. Warning!, if no data-column attribute is added to the input, the input will be ignored.
In v2.15, use a data-column="all" to bind an external any-match search filter....
这意味着你有 <input class="search-items"/>
的地方应该更像 <input class="search-items" type="search" placeholder="Search" data-column="all">
(如果需要,将“全部”更改为列号)
第 4 期:
如您所述,filter
小部件似乎覆盖了分页设置。一个快速解决这个问题的方法是将隐藏元素的调用移动到 onInit:
回调中,并将其放在计时器函数中,这样它就可以让 filter
插件先做它的事情 然后 隐藏其他“页面”。像这样:
setTimeout(function(){ items.hide().slice(startItem - 1, endItem).show();}, 100);
这可能不是最好的方法,但无需深入了解小部件,这确实有效。