我有一个大约5000行的大表.
我使用以下 jquery片段在此表中搜索特定文本.
我使用以下 jquery片段在此表中搜索特定文本.
function searchTable(inputVal) { var table = $('.table'); table.find('tr').each(function(index,row) { var allCells = $(row).find('td'); if(allCells.length > 0) { var found = false; allCells.each(function(index,td) { var regExp = new RegExp(inputVal,'i'); if(regExp.test($(td).text())) { found = true; return false; } }); if(found == true) { $(row).show(); } else { $(row).hide(); } } }); }
现在这个脚本需要一些时间来执行,因为它遍历每行的每个单元格.考虑到该表连续有6个单元格,迭代总数几乎是6 * 5000 = 30000!
是否有任何建议来优化此代码段?
解决方法
您还可以创建自定义扩展程序,如:
// jQuery expression for case-insensitive filter $.extend($.expr[":"],{ "contains-ci": function(elem,i,match,array) { return (elem.textContent || elem.innerText || $(elem).text() || "").toLowerCase().indexOf((match[3] || "").toLowerCase()) >= 0; } });
并像这样使用它:
$("#table tbody>tr").hide(); // hides all tr $("#table td:contains-ci('" + value + "')").parent("tr").show(); // show tr that containt value
这是一个运行的例子:http://jsfiddle.net/QvU67/