Delay Hinzugefügt $.post jquery-Anfrage
Schicke ich ein jquery -$.post-request auf jeder checkbox in einer form verändern.
Was ich will ist die Verzögerung des $.post für 500 ms im Fall der Nutzer prüft mehr als ein Kontrollkästchen schnell, um zu vermeiden, mehrere nutzlos Anfragen.
Hier ist mein code, ich habe eine setTimeout-Funktion, die scheint zu funktionieren mit allem, was außer diesem $.post-Funktion...
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 );
});
Eine Idee warum das nicht funktioniert?
- Ich verwende in der Regel setTimeout so:
timer = window.setTimeout(function, 1000);
- Ist das nicht der "}, 1000" an der falschen Stelle? Sollte es nicht das zweite argument der delay () - Funktion anstelle des change () - Funktion?
- was Elian meint. Ihre Weitergabe
1000
zu.change
. Auch Standard -timer
zuundefined
oder Sie werden versehentlich töten diesetTimeout
mitid === 0
- du hast absolut Recht, habe ich übersehen, dass man, danke für den Hinweis it out!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Live-Beispiel
diese:
werden sollte:
jQuery hat bereits eine delay-Funktion: