如何使jQuery fire事件不那么频繁

时间:2014-03-25 19:13:46

标签: javascript jquery settimeout

我有一个输入字段,用户输入信息,如下所示:

$('input').on("keyup", function(){
    // make an ajax call
});

我希望不经常拨打电话。我该怎么办?我尝试了setTimeoutdelay()。无法实现我的目标。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:3)

您可以使用此代码:

$('input').keyup(function(e){
    var timer = $(this).data('__timer');
    clearTimeout(timer);
    $(this).data('__timer', setTimeout(function(e){
        //Your ajax here.
        console.log(e)
    }.bind(this, e), 500));
})

答案 1 :(得分:1)

您可以使用计时器延迟AJAX通话,直到自上次keyup后经过一定时间后:

  $('input').keyup(function() {
      // delay the search unless 0.5 seconds have passed since last keyup
      clearTimeout($.data(this, 'timer'));
      $(this).data('timer', setTimeout(<AJAX function call>, 500));
  });