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 zu undefined oder Sie werden versehentlich töten die setTimeout mit id === 0
  • du hast absolut Recht, habe ich übersehen, dass man, danke für den Hinweis it out!
InformationsquelleAutor Phil | 2011-03-04
Schreibe einen Kommentar