我在表单中任何复选框更改时都会发送一个jquery $.post请求。我想要的是,如果用户快速勾选多个复选框,则延迟$.post 500毫秒,以避免多个无用的请求。
这是我的代码,我添加了一个setTimeout函数,它似乎可以与除了这个$.post函数之外的所有内容一起使用...
有什么想法为什么这不起作用?
这是我的代码,我添加了一个setTimeout函数,它似乎可以与除了这个$.post函数之外的所有内容一起使用...
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 );
});
有什么想法为什么这不起作用?
timer = window.setTimeout(function, 1000);
- ipalaus1000
传递给.change
。同时将默认的timer
设置为undefined
,否则你会意外地杀死id === 0
的setTimeout
。 - Raynos