我有超過3000個具有唯一名稱的項目列表。他們都包裹UL標籤內是這樣的:加速jQuery/Javascript搜索功能
<ul>
<li><a href="#"> Item_ID125167</a></li>
<li><a href="#"> Item_ID146324</a></li>
</ul>
然後,我有這樣一個搜索輸入:
<input type="text" id="searchfield" class="form-control" placeholder="Search">
<span class="input-group-addon">
<button type="submit" id="searchButton" onclick="filterByName()">
<span class="glyphicon glyphicon-search"></span>
</button>
</span>
最後隱藏/顯示匹配項的功能:
function filterByName() {
$("li").each(function(index) {
if ($(this).children('a').text().toUpperCase().indexOf($("#searchfield").val().toUpperCase()) > -1) {
$(this).css('display', "");
} else {
$(this).css('display', "none");
}
});
}
這種感覺很慢,超過3000個物品,而使用古老的Android手機。是否有更好的搜索功能解決方案?
使用find(),而不是孩子的()。 Find使用本機瀏覽器功能,速度通常更快。 – Gerard
我的建議是不要在單個頁面上顯示所有3000個項目,但將它們分成多個頁面(分頁技術),以便每個頁面顯示50-100個項目。通過這樣做,您可以顯着降低循環開銷並大大提高性能。實際上,無論如何,沒有人願意滾動查看長列表,這就是爲什麼所有的在線購物網站他們利用分頁技術 – meteorzeroo
搜索是否仍然能夠從分頁的第20頁快速地選擇項目? –