我正在对表单中的任何复选框更改发送jquery $ .post请求。 我想要的是将$ .post延迟500毫秒,以防用户快速检查多个复选框,以避免多个无用的请求。
这是我的代码,我添加了一个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 );
});
知道为什么这不起作用?
答案 0 :(得分:12)
这样:
$('.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);
});
答案 1 :(得分:5)
jQuery已经有一个延迟函数:
$(window).delay(500).queue(function() {
$.post({});
});