Heim  >  Artikel  >  Web-Frontend  >  Wie führe ich eine Funktion nur einmal aus, nachdem die Fenstergröße in JavaScript/jQuery geändert wurde?

Wie führe ich eine Funktion nur einmal aus, nachdem die Fenstergröße in JavaScript/jQuery geändert wurde?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-04 15:58:01629Durchsuche

How to Execute a Function Only Once After Window Resizing in JavaScript/jQuery?

Verzögerte Ausführung nach Fenstergrößenänderung in JavaScript/jQuery

Das $(window).resize-Ereignis in JavaScript und jQuery wird beim Öffnen des Browsers ausgelöst Fenstergröße ändert sich. Bei der manuellen Größenänderung durch Ziehen am Fensterrand wird es jedoch häufig mehrmals ausgelöst.

Einmaligen Aufruf erreichen:

So rufen Sie eine Funktion nur einmal auf, nachdem die Größe geändert wurde Wenn die Größenänderung abgeschlossen ist, kann ein Timer verwendet werden, um die Ausführung zu verzögern, bis der Größenänderungsprozess abgeschlossen ist. Hier ist eine Lösung:

Lösung:

<code class="javascript">var waitForFinalEvent = (function () {
  var timers = {};
  return function (callback, ms, uniqueId) {
    if (!uniqueId) {
      uniqueId = "Don't call this twice without a uniqueId";
    }
    if (timers[uniqueId]) {
      clearTimeout (timers[uniqueId]);
    }
    timers[uniqueId] = setTimeout(callback, ms);
  };
})();</code>

Verwendung:

<code class="javascript">$(window).resize(function () {
    waitForFinalEvent(function(){
      alert('Resize...');
      //...
    }, 500, "some unique string");
});</code>

In dieser Lösung ein Unikat Die Kennung wird für jeden Rückruf verwendet, um mehrere Ereignisregistrierungen zu verarbeiten.

Dieser Ansatz stellt sicher, dass die Rückruffunktion nach einer angegebenen Verzögerung nur einmal aufgerufen wird, sodass genügend Zeit für den Abschluss der Größenänderung bleibt und eine redundante Ereignisauslösung verhindert wird.

Das obige ist der detaillierte Inhalt vonWie führe ich eine Funktion nur einmal aus, nachdem die Fenstergröße in JavaScript/jQuery geändert wurde?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn