Jquery随着延迟而改变

Gol*_*wby 26 javascript jquery

可能重复:
在jQuery中调用事件调用

我喜欢jQuery的.change()功能,但是当用户在select下拉列表中快速更改选项时,我想阻止触发大量的AJAX请求.例如,当用户使用鼠标滚轮时,它会在选择新选项时触发每个选项.

我想提出一个很好的干净方法来处理只有在用户停止更新选择下拉列表后才发送这些更新.

有没有一种处理这种情况的巧妙方法?

glo*_*tho 79

执行此操作的典型方法是使用setTimeout和clearTimeout:

var wto;

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

  • wto代表什么? (3认同)
  • 如果您不想创建全局变量,可以使用`.data()`将间隔id分配给选择元素本身。需要更多代码,但我知道有些人不喜欢创建全局变量。 (2认同)

Ami*_*ein 8

我建议你使用underscore.js然后:

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

$('#select').change(newFunction);
Run Code Online (Sandbox Code Playgroud)

阅读更多关于underscore.debounce的信息.