我已经改编了教程中的以下代码,以根据内容过滤 li 元素:
$('#_selectSearch_' + index).keyup(function() {
var filter = $(this).val();
if(filter) {
$('#_selectDrop_' + index).find("li:not(:contains(" + filter + "))").slideUp();
$('#_selectDrop_' + index).find("li:contains(" + filter + ")").slideDown();
} else {
$('#_selectDrop_' + index).find("li").slideDown();
}
});
该代码工作得很好,但是在处理大型列表时非常慢,每次按键都会使浏览器停止几秒钟。我一直在环顾四周,得出的结论是,改进这一点的方法是以某种方式缓存列表而不是直接在 DOM 上操作,但不知道如何实现这一点。