Heim  >  Artikel  >  Web-Frontend  >  Wie kann verhindert werden, dass mehrere $(window).resize-Ereignisse ausgelöst werden?

Wie kann verhindert werden, dass mehrere $(window).resize-Ereignisse ausgelöst werden?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-05 21:48:02483Durchsuche

How to Prevent Multiple $(window).resize Event Firings?

Bewältigung mehrerer Auslösungen von Größenänderungsereignissen mit $(window).resize

In der Webentwicklung kann die Manipulation der Browserfenstergröße mithilfe des Ereignisses $(window).resize ausgelöst werden mehrere Schüsse. Um dieses Problem zu beheben, untersuchen wir eine Lösung, die eine Funktion erst ausführt, nachdem die Größenänderung abgeschlossen ist.

Lösung:

So rufen Sie eine Funktion auf, nachdem die Größenänderung des Browserfensters abgeschlossen ist Wenn wir fertig sind, können wir die Funktion „waitForFinalEvent“ verwenden. Diese Funktion benötigt eine Rückruffunktion, eine Millisekundenverzögerung und einen eindeutigen Bezeichner als Argumente. Die Funktion legt basierend auf der Verzögerung ein Timeout für den Rückruf fest, prüft aber auch, ob bereits ein Timeout mit derselben eindeutigen ID vorhanden ist. Wenn ja, wird das vorherige Timeout abgebrochen und das neue festgelegt.

Implementierung:

<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:

Implementieren Sie die Funktion „waitForFinalEvent“ wie folgt in Ihrem Code:

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

Durch die Bereitstellung einer eindeutigen ID für jeden Rückruf stellt diese Implementierung sicher, dass separate Rückrufe die Timeout-Ereignisse des anderen nicht beeinträchtigen. Daher wird die Funktion erst ausgeführt, nachdem der Größenänderungsvorgang abgeschlossen ist, wodurch Mehrfachauslösungen verhindert werden.

Das obige ist der detaillierte Inhalt vonWie kann verhindert werden, dass mehrere $(window).resize-Ereignisse ausgelöst werden?. 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