我有一个带有多个按钮,滑块等的表单,在点击,拖动等时都会触发主要的ajax定价功能。通常会在短时间内连续多次点击按钮(例如+按钮到增加价值)。
我不希望每次都调用主ajax函数,而是希望JQuery在执行LAST触发事件之后等待1秒。换句话说,如果该功能被触发<自上次触发后1秒......等待。
答案 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);
}
}
);