【发布时间】:2015-07-30 09:29:35
【问题描述】:
我正在制作一个列表过滤器,并希望延迟,以防用户是快速打字员。为类似问题寻找不同的解决方案对我没有帮助,我不理解它们实现的逻辑。
这是我当前的代码:
$.fn.filterList = function(){
var inputFilter = $(this);
var list = $('#' + inputFilter.data('list'));
var listItems = list.children('li');
inputFilter.keyup(function(){
setTimeout(function () {
var term = inputFilter.val().toLowerCase();
listItems.each(function(i, e){
var city = ($(e).text()).toLowerCase();
if(city.startsWith(term)){
console.log(city);
}
});
}, 800);
});
};
$('.my-input').filterList();
这样做的问题是,无论用户键入多快,它都会在每次按键时触发。
如何实现延迟,使其不会针对每个keyup 触发?
【问题讨论】:
-
keyup用于触发每个释放的键。您只能控制您在事件处理程序中执行的操作。
标签: javascript jquery filter