jQuery的变化与延迟

问题描述:

可能重复:
Throttle event calls in jQueryjQuery的变化与延迟

我喜欢的jQuery的.change()功能,但我想,以防止触发吨AJAX请求时的用户快速更改选择下拉菜单中的选项。举个例子,当用户使用鼠标滚轮时,当他们选择新选项时,它将触发每个选项。

我想提出一个很好的干净的方式来处理只有当用户停止更新选择下拉菜单时才发送这些更新。

处理这种情况有没有一种简洁的方法?

+5

你在找什么叫做* debouncing *。 – 2012-02-24 03:08:01

做到这一点,典型的方法是使用setTimeout和clearTimeout:

var wto; 

$('#select').change(function() { 
    clearTimeout(wto); 
    wto = setTimeout(function() { 
    // do stuff when user has been idle for 1 second 
    }, 1000); 
}); 
+3

wto代表什么? – Gisheri 2015-08-14 15:19:14

+1

Window.TimeOut - 例如只是随机选择。 – glortho 2015-08-14 15:48:31

+0

如果您不想创建全局变量,可以使用'.data()'将间隔ID分配给select元素本身。需要更多的代码,但我知道有些人不喜欢创建全局变量。 – Gavin 2017-07-17 21:14:13

我建议你使用underscore.js则:

var newFunction=_.debounce(function(){ 
    alert('You function, after use stop scroll') 
},1000); //Wait seconds after he stops 

$('#select').change(newFunction); 

了解更多关于underscore.debounce