我喜欢jQuery的.change()功能,但是当用户快速更改选择下拉列表中的选项时,我想阻止触发大量的AJAX请求。例如,当用户使用鼠标滚轮时,它会在选择新选项时触发每个选项。
一旦用户停止更新选择下拉列表,我想提出一个干净利落的方法来处理这些更新。
有没有一种处理这种情况的巧妙方法?
答案 0 :(得分:70)
执行此操作的典型方法是使用setTimeout和clearTimeout:
var wto;
$('#select').change(function() {
clearTimeout(wto);
wto = setTimeout(function() {
// do stuff when user has been idle for 1 second
}, 1000);
});
答案 1 :(得分:8)
我建议您使用underscore.js:
var newFunction=_.debounce(function (){
alert('You function, after use stop scroll')
},1000); //Wait seconds after he stops
$('#select').change(newFunction);
详细了解underscore.debounce。