如何获取filter函数筛选HTML表格后的匹配结果行数?
实现表格筛选后显示匹配行数
先修正你原代码里的两处问题:
remoceClass是拼写错误,正确写法为removeClass- 不要在
keyup事件内重复绑定hover事件,否则每次输入都会新增事件监听,导致行为异常,建议把hover事件绑定移到外部一次性处理
下面是实现筛选行数的完整方案:
// 一次性绑定hover事件,避免重复绑定导致的异常 $("#MySearch tr").hover(function(){ $(this).addClass("hover"); }, function(){ $(this).removeClass("hover").addClass("on"); }); $("#myInput").on("keyup", function() { var value = $(this).val().toLowerCase(); // 存储筛选后的匹配行集合 var matchedRows = $("#MySearch tr").filter(function() { var isMatch = $(this).text().toLowerCase().indexOf(value) > -1; $(this).toggle(isMatch); if (value !== '') { $(this).addClass("on"); } else { $(this).removeClass("on hover"); } return isMatch; // 返回匹配状态,让filter收集所有符合条件的行 }); // 将筛选行数显示到页面(假设页面有id为resultCount的元素) $("#resultCount").text("筛选结果:" + matchedRows.length + " 行"); });
补充说明:
filter方法会返回所有回调函数返回true的元素,因此通过matchedRows.length就能直接获取筛选后的行数- 若要显示计数,需在页面中添加对应元素,示例代码:
<div id="resultCount"></div>
内容的提问来源于stack exchange,提问作者Nicos
相关产品推荐
相关产品推荐

