[英]How can i get the number of visible items from a filtered list using jquery?
I have a list of 4 divs and an input field for filtering the list using jquery.我有一个包含 4 个 div 的列表和一个用于使用 jquery 过滤列表的输入字段。 What i need is to display/count the number of the filtered results on "keyup" function .
我需要的是在“keyup”功能上显示/计算过滤结果的数量。 I am using the "size" function to get the total number of the results.
我正在使用“大小”函数来获取结果的总数。
However i 'm not getting the right number of results and i can't fix it.但是我没有得到正确数量的结果,我无法修复它。
Here's my code:这是我的代码:
var langMap = {} $('#search-stores-box').keyup(function(){ var valThis = $(this).val().toLowerCase(); var filteredWord = getLatinWord(valThis); var count = $('.storesList .store-block').size() - $('.storesList .hidden-store').size(); $('#count').text(count); if(filteredWord == ""){ $('.storesList .store-block').show(); $('.storesList .store-block').removeClass('hidden-store'); } else { $('.storesList .store-block').each(function(){ $('.storesList .store-block').addClass('hidden-store'); var text = $(this).text().toLowerCase(); text = getLatinWord(text); (text.indexOf(filteredWord) > -1 ) ? $(this).show() : $(this).hide(); }); } }); function getLatinWord(word){ return word.split('').map(function(character){ if (langMap[character]) { return langMap[character]; } return character; }).join(''); }
.results-box { margin-bottom:10px; overflow:hidden; display:inline-block; } .search-area {margin-bottom:10px;} #count {display:inline-block;} .store-block { width:80%; margin-bottom:10px; padding:5px; background:#e5e5e5; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <div class="results-box">Number of stores: <div id="count"></div> </div> <div class="search-area"> <input placeholder="Type a store name..." id="search-stores-box" type="text" /> </div> <div class="storesList"> <div class="store-block">Apple Store</div> <div class="store-block">Microsoft Store</div> <div class="store-block">Motorola Store</div> <div class="store-block">Nokia Store</div> </div>
you can get count using :visible
您可以使用
:visible
计数
var count = $('.storesList .store-block:visible').length;
$('#count').text(count);
OR you can check store-blobk with no hidden-store class或者你可以检查 store-blobk 没有 hidden-store 类
var count = $('.storesList .store-block:not(.hidden-store)').length;
$('#count').text(count);
check below working code snippet检查下面的工作代码片段
var langMap = {} $('#count').text($('.storesList .store-block:visible').length); $('#search-stores-box').keyup(function(){ var valThis = $(this).val().toLowerCase(); var filteredWord = getLatinWord(valThis); if(filteredWord == ""){ $('.storesList .store-block').show(); $('.storesList .store-block').removeClass('hidden-store'); } else { $('.storesList .store-block').each(function(){ $('.storesList .store-block').addClass('hidden-store'); var text = $(this).text().toLowerCase(); text = getLatinWord(text); (text.indexOf(filteredWord) > -1 ) ? $(this).show() : $(this).hide(); }); } var count = $('.storesList .store-block:visible').length; $('#count').text(count); }); function getLatinWord(word){ return word.split('').map(function(character){ if (langMap[character]) { return langMap[character]; } return character; }).join(''); }
.results-box { margin-bottom:10px; overflow:hidden; display:inline-block; } .search-area {margin-bottom:10px;} #count {display:inline-block;} .store-block { width:80%; margin-bottom:10px; padding:5px; background:#e5e5e5; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="results-box">Number of stores: <div id="count"></div> </div> <div class="search-area"> <input placeholder="Type a store name..." id="search-stores-box" type="text" /> </div> <div class="storesList"> <div class="store-block">Apple Store</div> <div class="store-block">Microsoft Store</div> <div class="store-block">Motorola Store</div> <div class="store-block">Nokia Store</div> </div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.