Javascript 使用jQuery或纯JS过滤数字的快速解决方案
这是我的页面: 我使用以下代码过滤keyup上的记录:Javascript 使用jQuery或纯JS过滤数字的快速解决方案,javascript,jquery,search,filter,digits,Javascript,Jquery,Search,Filter,Digits,这是我的页面: 我使用以下代码过滤keyup上的记录: function Search() { $('.co').show(); $('.co').each(function () { var showco = true; for (var i = 1; i <= 9; i++) { if ($('.txtFilter' + i.toString()).val().trim()
function Search() {
$('.co').show();
$('.co').each(function () {
var showco = true;
for (var i = 1; i <= 9; i++) {
if ($('.txtFilter' + i.toString()).val().trim() != '') {
if ($(this).find('.D' + i.toString()).text() != $('.txtFilter' + i.toString()).val()) {
showco = false;
} ;
};
};
if (!showSim) {
$(this).hide();
};
});
};
函数搜索(){
$('.co').show();
$('.co')。每个(函数(){
var showco=true;
对于(var i=1;我尝试将数字放入二维数组,并在该数组上运行筛选代码。以这种方式从DOM中提取数字可能太昂贵。Chrome开发工具将告诉您在那里花费了多少时间。您希望将DOM或视图与数据/模型分离。搜索数据,并显示视图结果。查看$('.txtFilter'+i.toString())
,循环中每行执行两次,每次执行9次。正如您执行18
时,选择每个.co
元素。对于5000
元素,这是18*5000
。如果您将该结果缓存在之前,则无论有多少个元素,每个都将始终是9
拥有。另一件不必要的昂贵的东西是.text()
,但最昂贵的部分可能是$('.co').show();
,以及$(this.hide()
。特别是因为您先.show
全部,然后.hide())不必切换VisuBILITY。考虑它是在KEYUP事件上,如果用户使用退格或删除来删除一个数字,则隐藏元素应该在再次过滤之前显示。如果用户只添加数字,则另一个优化将过滤您的最后结果,不需要再次检查您知道的W。不匹配