将延迟添加到$ .post jquery请求
问题描述:
我发送一个jQuery $ .post请求在窗体中的任何复选框更改。 我想要的是将$ .post延迟500毫秒,以防用户快速检查多个复选框,以避免多次无用的请求。
这里是我的代码,我添加了似乎与此除外.post的$功能一切工作setTimeout函数...
var delay = (function(){
var timer = 0;
return function(callback, ms){
clearTimeout (timer);
timer = setTimeout(callback, ms);
};
})();
$(document).ready(function() {
$('.checkbox').change(function() {
delay(function(){
$.post("/?page_id=4", $("#selectors").serialize(), function(data){
$('#results').html(data);
});
});
}, 1000);
});
知道为什么这不起作用?
答
这样的:
$('.checkbox').change(function() {
delay(function(){
$.post("/?page_id=4", $("#selectors").serialize(), function(data){
$('#results').html(data);
});
});
}, 1000);
应该是:
$('.checkbox').change(function() {
delay(function(){
alert('post');
$.post("/?page_id=4", $("#selectors").serialize(), function(data){
$('#results').html(data);
});
}, 1000);
});
我通常使用的setTimeout这样的:'计时器= window.setTimeout(函数,1000);' – ipalaus 2011-03-04 14:30:50
是不是“},1000”在错误的地方?它不应该是delay()函数的第二个参数,而不是change()函数? – 2011-03-04 14:32:06
@ElianEbbing @Phil Elian说。你将'1000'传递给'.change'。另外默认'timer'为'undefined',否则你会不小心使用'id === 0'终止'setTimeout'' – Raynos 2011-03-04 14:34:45