Jquery-Änderung mit Verzögerung [duplicate]

Lesezeit: 2 Minuten

Benutzer-Avatar
GoldenNewby

Mögliches Duplikat:

Ereignisaufrufe in jQuery drosseln

Ich mag die .change()-Funktionalität von jQuery, aber ich möchte verhindern, dass eine Menge AJAX-Anforderungen ausgelöst werden, wenn ein Benutzer schnell Optionen in einem ausgewählten Dropdown-Menü ändert. Wenn ein Benutzer beispielsweise ein Mausrad verwendet, werden alle Optionen ausgelöst, wenn er seine neue Option auswählt.

Ich würde gerne eine gute, saubere Möglichkeit finden, diese Updates nur zu senden, wenn der Benutzer die Aktualisierung des Auswahl-Dropdowns für eine Sekunde beendet.

Gibt es einen ordentlichen Weg, mit dieser Situation umzugehen?

  • Was Sie suchen, heißt entprellt.

    – Felix Klinge

    24. Februar 2012 um 3:08 Uhr

Der typische Weg, dies zu tun, ist mit setTimeout und clearTimeout:

var wto;

$('#select').change(function() {
  clearTimeout(wto);
  wto = setTimeout(function() {
    // do stuff when user has been idle for 1 second
  }, 1000);
});

  • Wofür steht WT?

    – Gischeri

    14. August 2015 um 15:19 Uhr

  • Window.TimeOut – zum Beispiel nur eine zufällige Auswahl.

    – glorth

    14. August 2015 um 15:48 Uhr

  • Wenn Sie keine globale Variable erstellen möchten, können Sie verwenden .data() um die Intervall-ID dem select-Element selbst zuzuweisen. Benötigt etwas mehr Code, aber ich weiß, dass manche Leute nicht gerne globale Variablen erstellen.

    – Gawin

    17. Juli 2017 um 21:14 Uhr

  • Hier ein Beispiel für den Kommentar von @Gavin: stackoverflow.com/a/29417088/2617123

    – epideda

    14. Mai 2020 um 5:12 Uhr

  • Ich würde argumentieren, dass die Verwendung eines HTML-Elements zum Speichern des Anwendungsstatus mehr Fallstricke hat als die Verwendung des globalen Status, aber Sie können den globalen Status leicht vermeiden, indem Sie entweder Ihren modularisierten Code mit ähnlichen Codes bündeln webpack.js.org oder indem Sie einfach Ihren Code in eine selbstausführende Funktion einpacken: markdalgleish.com/2011/03/self-executing-anonymous-functions

    – glorth

    15. Mai 2020 um 17:26 Uhr

Benutzer-Avatar
Aminadav Glickshtein

Ich empfehle Ihnen dann underscore.js zu verwenden:

var newFunction=_.debounce(function (){ 
  alert('You function, after use stop scroll')
},1000); //Wait seconds after he stops

$('#select').change(newFunction);

Lesen Sie mehr über unterstrich.debounce.

1016170cookie-checkJquery-Änderung mit Verzögerung [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy