JQuery等待x秒。在调用函数之前不活动

时间:2011-10-14 02:39:47

标签: jquery ajax timer onclick

我有一个带有多个按钮,滑块等的表单,在点击,拖动等时都会触发主要的ajax定价功能。通常会在短时间内连续多次点击按钮(例如+按钮到增加价值)。

我不希望每次都调用主ajax函数,而是希望JQuery在执行LAST触发事件之后等待1秒。换句话说,如果该功能被触发<自上次触发后1秒......等待。

2 个答案:

答案 0 :(得分:2)

我会在每次更改时执行setTimeout调用,并将超时设置为1000毫秒。存储来自setTimeout调用的返回值,如果在setTimeout调用触发其回调之前发生更改,则取消setTimeout并启动另一个。

var priceAdjustmentTimeout;
function somethingChanged() {
  if (priceAdjustment) {
    clearTimeout(priceAdjustmentTimeout);
  }
  priceAdjustmentTimeout = setTimeout(doPriceAdjustment, 1000);
}

function doPriceAdjustment() { 
  priceAdjustmentTimeout = null;
  /* do stuff here */
}

答案 1 :(得分:1)

您可以使用布尔变量作为标志并使用setTimeout来实现此目的。它可能看起来像这样。

var wait = false;
$('#button').click(
     function() {
         if(!wait) {
             //run code here
             wait = true;
         } else {
           var t = setTimeout('some code here ending with `wait = false;`',1000);
        }
     }
);