图片搜索结果计数多1,如何将结果数减1修正?
解决搜索结果计数多1的问题
问题原因
你添加的外层<li class="in2">会被选择器$('#list2 .in2')统计进去,导致实际图片数量+1的错误计数。
解决方案
方案1:调整计数逻辑,直接减1(最简单快速)
修改代码中两处计算jobCount的地方,将计数结果减1,同时用Math.max避免出现负数:
原代码:
var jobCount = $('#list2 .in2').length;
修改为:
var jobCount = Math.max(0, $('#list2 .in2').length - 1);
这样初始时9-1=8,搜索匹配3个时3-1=2,完全符合实际图片数量,且无结果时0-1会被修正为0,不会显示负数。
方案2:精准选择图片对应的<li>元素(更规范)
直接选择外层<li>内部的图片项,避免统计外层容器:
原代码:
var jobCount = $('#list2 .in2').length;
修改为:
var jobCount = $('#list2 .panel .in2').length;
这个方法更精准,因为它只统计包裹图片卡片的<li>,完全排除外层的容器<li>,逻辑上更严谨。
方案3:修改HTML结构,区分容器与图片项(最彻底)
将外层的<li class="in2">的类名改为其他名称(比如container-li),避免和图片项的in2类冲突:
修改HTML:
<li class="container-li"> <!-- 内部按钮、panel等内容保持不变 --> </li>
同时调整搜索逻辑中的元素选择,确保隐藏/显示逻辑正常:
// 替换原有的选择器 $("#list2 li.container-li").not(":containsi('" + searchSplit + "')").each(function(e) { $(this).addClass('hiding out').removeClass('container-li'); setTimeout(function() { $('.out').addClass('hidden'); }, 300); }); $("#list2 li.container-li:containsi('" + searchSplit + "')").each(function(e) { $(this).removeClass('hidden out').addClass('container-li'); setTimeout(function() { $('.container-li').removeClass('hiding'); }, 1); });
修改后,原计数代码$('#list2 .in2').length就只会统计图片项,无需额外调整。
内容的提问来源于stack exchange,提问作者mbkadoglu
相关产品推荐
相关产品推荐

