在jQuery表中搜索
我制作了一个脚本来查找表中的字符串。找到该行时,将显示该行,否则将隐藏该行。 它在Chrome上运行得很好,但在Firefox和InternetExplorer上有些落后。这个代码好还是更好在jQuery表中搜索,jquery,html-table,Jquery,Html Table,我制作了一个脚本来查找表中的字符串。找到该行时,将显示该行,否则将隐藏该行。 它在Chrome上运行得很好,但在Firefox和InternetExplorer上有些落后。这个代码好还是更好 $("#searchValue").keyup(function() { var table = $(this).siblings('table').not(':hidden'); var name = $("#searchValue").val(); if (name === "") {
$("#searchValue").keyup(function() {
var table = $(this).siblings('table').not(':hidden');
var name = $("#searchValue").val();
if (name === "") {
$(table).find('tr').show();
$(table).trigger('update');
}
else {
name = name.toLowerCase();
var trs = $(table).find('tr').not(':first');
trs.each(function() {
var tr = $(this);
var count = ($(tr).children('td').length);
var suc = -1;
for (var i = 0; i < count; i++) {
var state = $(tr).children("td").eq(i).html();
state = state.toLowerCase();
if (state.match(name)) {
suc = 1;
}
else if (suc !== 1) {
suc = 0;
}
}
if (suc === 1) {
$(tr).show();
}
else {
$(tr).hide();
}
});
$(table).trigger('update');
}
});
$(“#searchValue”).keyup(函数(){
var table=$(this).sibbines('table')。not('hidden');
变量名称=$(“#搜索值”).val();
如果(名称==“”){
$(table.find('tr').show();
$(表).trigger('update');
}
否则{
name=name.toLowerCase();
var trs=$(表).find('tr')。not(':first');
trs.each(函数(){
var tr=$(本);
变量计数=($(tr).children('td').length);
var-suc=-1;
对于(变量i=0;i
表:
<table id='tableProject' class='tablesorter'>
<thead>
<tr>
<th>Project ID</th>
<th>Customer</th>
<th>Description</th>
<th>Status</th>
<th>Max Hours</th>
<th>Achieved</th>
<th>Difference</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
项目ID
顾客
描述
地位
最长工作时间
实现
差别
for循环中的.eq()
可能是性能问题的潜在原因(不是积极的)。在每个tr
中,您说的是“现在在DOM上迭代多次,并使用此索引查找td
”
同样,在中使用for循环。each()
是冗余的
在这种情况下,避免使用.eq()
,只需使用:
你能提供一个表格样本吗?你可以使用DataTables吗?再多一些记录,这样我们就可以玩了
$(function () {
$("#searchValue").keyup(function () {
var table = $(this).siblings('table').not(':hidden'),
name = $("#searchValue").val().toLowerCase();
if (!name) {
$(table).find('tr').show();
$(table).trigger('update');
} else {
var trs = $(table).find('tbody tr');
trs.each(function () {
var tr = $(this),
results = null;
results = tr.find('td').filter(function () {
return $(this).html().toLowerCase().match(name);
});
if (!results.length) {
tr.hide()
} else {
tr.show();
}
});
$(table).trigger('update');
}
});
});