可能是重复问题:
在 jQuery 中限制事件调用频率
我喜欢 jQuery 的 .change() 功能,但我想要在用户快速更改下拉选择框选项时防止触发大量的 AJAX 请求。例如,当用户使用鼠标滚轮时,它会触发每个选项,因为他们选择自己的新选项。
我想要找到一种好的干净方法,只有在用户停止更新下拉选择框一秒钟后才发送这些更新。
是否有一种巧妙的方式来处理这种情况?
可能是重复问题:
在 jQuery 中限制事件调用频率
我喜欢 jQuery 的 .change() 功能,但我想要在用户快速更改下拉选择框选项时防止触发大量的 AJAX 请求。例如,当用户使用鼠标滚轮时,它会触发每个选项,因为他们选择自己的新选项。
我想要找到一种好的干净方法,只有在用户停止更新下拉选择框一秒钟后才发送这些更新。
是否有一种巧妙的方式来处理这种情况?
通常做法是使用setTimeout和clearTimeout:
var wto;
$('#select').change(function() {
clearTimeout(wto);
wto = setTimeout(function() {
// do stuff when user has been idle for 1 second
}, 1000);
});
.data()
将间隔ID分配给选择元素本身。需要编写更多的代码,但我知道有些人不喜欢创建全局变量。 - Gavinvar newFunction=_.debounce(function (){
alert('You function, after use stop scroll')
},1000); //Wait seconds after he stops
$('#select').change(newFunction);
了解更多关于underscore.debounce的内容。