Heim Web-Frontend js-Tutorial Verwenden Sie jQuery, um Änderungen der DOM-Elementgröße zu überwachen

Verwenden Sie jQuery, um Änderungen der DOM-Elementgröße zu überwachen

Jun 17, 2017 pm 03:28 PM
jquery 使用 元素 大小 监听

Ursache

Als ich heute eine Seite schrieb, hatte ich plötzlich ein solches Bedürfnis. Da die Höhe des übergeordneten Elements (ein DIV) ein fester Wert ist, der von Javascript berechnet wird, ist ein Multi-Talk-Plug-in erforderlich. in hinzugefügt wurde. Nach dem Benutzerkommentar wird das Höhenattribut des untergeordneten Elements (DIV) erhöht, was zu einem Überlauf des untergeordneten Elements führt. Aber ich wusste nicht, wie ich eine Rückruffunktion für Duosuos Kommentarschaltfläche hinzufügen sollte, also dachte ich darüber nach, die Höhe des übergeordneten Elements basierend auf der Größenänderung des untergeordneten Elements neu zu berechnen.

onresize?

Normalerweise wird eine Rückruffunktion ausgelöst, die das Layout ändert, wenn sich das gesamte Browserfenster ändert. Das Größenänderungsereignis des Fensterobjekts wird verwendet und gebunden mit:

window.onresize = callback;
Nach dem Login kopieren

. Da das Ziel des Größenänderungsereignisses jedoch „defaultView“ (Fenster) ist, lesen Sie bitte das Größenänderungsdokument von MDN. Das heißt, nur das Fensterobjekt verfügt über ein Größenänderungsereignis, daher habe ich darüber nachgedacht, den eigenen Ereignismechanismus von jquery zu verwenden, um eine Größenänderung zu simulieren Ereignis für ein gewöhnliches Element

Die Implementierungsidee der Verwendung von jQuery-Ereignissen

Sie können sich einen relativ einfachen Weg vorstellen:
1. Wenn das Element an gebunden ist Ändern Sie die Größe des Objekts und zeichnen Sie die Breite und Höhe des Elements auf
2. Verwenden Sie requestAnimationFrame, setTimeout und setInterval, um seine Breite und Höhe in regelmäßigen Abständen abzufragen. Wenn sie von der aufgezeichneten Breite und Höhe abweichen, führen Sie die Rückruffunktion aus und aktualisieren Sie sie die aufgezeichnete Breite zu Höhe

jQuery-Plugin

Ben Alman hat ein jQuery-Plugin für diese Funktion geschrieben, das den Code (Kernteil) des Portals darstellt
Der Inhalt von Ben Almans Blog für detaillierten Code:

(function($, window, undefined) {
  var elems = $([]),
    jq_resize = $.resize = $.extend($.resize, {}),
    timeout_id,
    str_setTimeout = 'setTimeout',
    str_resize = 'resize',
    str_data = str_resize + '-special-event',
    str_delay = 'delay',
    str_throttle = 'throttleWindow';
  jq_resize[str_delay] = 250;
  jq_resize[str_throttle] = true;
  $.event.special[str_resize] = {
    setup: function() {
      if (!jq_resize[str_throttle] && this[str_setTimeout]) {
        return false;
      }
      var elem = $(this);
      elems = elems.add(elem);
      $.data(this, str_data, {
        w: elem.width(),
        h: elem.height()
      });
      if (elems.length === 1) {
        loopy();
      }
    },
    teardown: function() {
      if (!jq_resize[str_throttle] && this[str_setTimeout]) {
        return false;
      }
      var elem = $(this);
      elems = elems.not(elem);
      elem.removeData(str_data);
      if (!elems.length) {
        clearTimeout(timeout_id);
      }
    },
    add: function(handleObj) {
      if (!jq_resize[str_throttle] && this[str_setTimeout]) {
        return false;
      }
      var old_handler;
      function new_handler(e, w, h) {
        var elem = $(this),
          data = $.data(this, str_data);
        data.w = w !== undefined ? w : elem.width();
        data.h = h !== undefined ? h : elem.height();
        old_handler.apply(this, arguments);
      }
      if ($.isFunction(handleObj)) {
        old_handler = handleObj;
        return new_handler;
      } else {
        old_handler = handleObj.handler;
        handleObj.handler = new_handler;
      }
    }
  };
  function loopy() {
    timeout_id = window[str_setTimeout](function() {
      elems.each(function() {
        var elem = $(this),
          width = elem.width(),
          height = elem.height(),
          data = $.data(this, str_data);
        if (width !== data.w || height !== data.h) {
          elem.trigger(str_resize, [data.w = width, data.h = height]);
        }
      });
      loopy();
    }, jq_resize[str_delay]);
  }
})(jQuery, this);
Nach dem Login kopieren

jQuery bietet jQuery-Plug-in-Entwicklern eine Schnittstelle zum Hinzufügen benutzerdefinierter Ereignisse. Weitere Informationen finden Sie in der offiziellen Dokumentation von jQuery um benutzerdefinierte jQuery-Ereignisse hinzuzufügen, die über drei Hooks verfügen:
1. Der Setup-Hook wird aufgerufen, wenn ein Ereignis eines bestimmten Typs zum ersten Mal an ein Element angehängt wird. Wenn „false“ zurückgegeben wird, ist dies die Standardeinstellung Methode wird verwendet, um das Ereignis
zu binden. 2. Teardown: Der Teardown-Hook wird aufgerufen, wenn das letzte Ereignis eines bestimmten Typs aus einem Element entfernt wird. Wenn diese Methode angegeben ist, wird sie vor dem Entfernen des Ereignisses ausgeführt handler -Programm (removeEventListener). Wenn false zurückgegeben wird, wird das standardmäßig gebundene Ereignis
entfernt. 3. Hinzufügen: Jedes Mal, wenn ein Ereignishandler zu einem Element über eine API wie .on() hinzugefügt wird ruft diesen Hook auf. Jedes Mal, wenn ein Ereignis an ein Element gebunden wird, werden die drei Hooks

setup, Teardown und Add ausgeführt. Das erste, was jeder Hook tut, ist, zu erkennen, ob das Objekt ein Fensterobjekt ist. und behandeln Sie es dann speziell entsprechend dem Fensterobjekt, da das Fensterobjekt selbst über ein Größenänderungsereignis verfügt.

Wie Sie am Setup-Hook sehen können, wird das gesamte Ereignis initialisiert. Erstellen Sie bei der Verarbeitung eine Elementwarteschlange In der Warteschlange werden Breite und Höhe in die Daten eingefügt und dann alle 250 ms die Schleifenfunktion gestartet. In der Schleifenfunktion wird beurteilt, ob eine Änderung vorliegt, und die Rückruffunktion wird ausgelöst aktualisiert. Die Breite und Höhe in

kann am Teardown-Hook gesehen werden. Wenn das Element das Ereignis entfernt, muss es nur das Element aus der Elementwarteschlange entfernen und die Daten darin löschen das Element. Wenn es das letzte Element in der Elementwarteschlange ist, wird die Ausführung nicht mehr im Add-Hook fortgesetzt.

Daraus können Sie einen einfachen jQuery-Implementierungsmechanismus erkennen Funktion

Das obige ist der detaillierte Inhalt vonVerwenden Sie jQuery, um Änderungen der DOM-Elementgröße zu überwachen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Mar 18, 2024 pm 02:58 PM

CrystalDiskMark ist ein kleines HDD-Benchmark-Tool für Festplatten, das schnell sequentielle und zufällige Lese-/Schreibgeschwindigkeiten misst. Lassen Sie sich als Nächstes vom Redakteur CrystalDiskMark und die Verwendung von CrystalDiskMark vorstellen ). Zufällige I/O-Leistung. Es ist eine kostenlose Windows-Anwendung und bietet eine benutzerfreundliche Oberfläche und verschiedene Testmodi zur Bewertung verschiedener Aspekte der Festplattenleistung. Sie wird häufig in Hardware-Reviews verwendet

Mar 18, 2024 am 10:58 AM

foobar2000 ist eine Software, die Ihnen jederzeit Musik aller Art mit verlustfreier Klangqualität bietet Spielen Sie das erweiterte Audio auf dem Computer ab, um ein bequemeres und effizienteres Musikwiedergabeerlebnis zu ermöglichen. Das Interface-Design ist einfach, klar und benutzerfreundlich. Es nimmt einen minimalistischen Designstil an, ohne übermäßige Dekoration Es unterstützt außerdem eine Vielzahl von Skins und Themes, personalisiert Einstellungen nach Ihren eigenen Vorlieben und erstellt einen exklusiven Musikplayer, der die Wiedergabe mehrerer Audioformate unterstützt. Außerdem unterstützt es die Audio-Gain-Funktion zum Anpassen der Lautstärke Passen Sie die Lautstärke entsprechend Ihrem Hörzustand an, um Hörschäden durch zu hohe Lautstärke zu vermeiden. Als nächstes lass mich dir helfen

So verwenden Sie NetEase Mailbox Master So verwenden Sie NetEase Mailbox Master Mar 27, 2024 pm 05:32 PM

NetEase Mailbox ist eine von chinesischen Internetnutzern weit verbreitete E-Mail-Adresse und hat mit seinen stabilen und effizienten Diensten schon immer das Vertrauen der Benutzer gewonnen. NetEase Mailbox Master ist eine E-Mail-Software, die speziell für Mobiltelefonbenutzer entwickelt wurde. Sie vereinfacht das Senden und Empfangen von E-Mails erheblich und macht unsere E-Mail-Verarbeitung komfortabler. Wie Sie NetEase Mailbox Master verwenden und welche spezifischen Funktionen es bietet, wird Ihnen der Herausgeber dieser Website im Folgenden ausführlich vorstellen und hofft, Ihnen weiterzuhelfen! Zunächst können Sie die NetEase Mailbox Master-App im Mobile App Store suchen und herunterladen. Suchen Sie im App Store oder im Baidu Mobile Assistant nach „NetEase Mailbox Master“ und befolgen Sie dann die Anweisungen zur Installation. Nachdem der Download und die Installation abgeschlossen sind, öffnen wir das NetEase-E-Mail-Konto und melden uns an. Die Anmeldeschnittstelle ist wie unten dargestellt

So verwenden Sie die Baidu Netdisk-App So verwenden Sie die Baidu Netdisk-App Mar 27, 2024 pm 06:46 PM

Cloud-Speicher sind heutzutage aus unserem täglichen Leben und Arbeiten nicht mehr wegzudenken. Als einer der führenden Cloud-Speicherdienste in China hat Baidu Netdisk mit seinen leistungsstarken Speicherfunktionen, der effizienten Übertragungsgeschwindigkeit und dem komfortablen Bedienerlebnis die Gunst einer großen Anzahl von Benutzern gewonnen. Und egal, ob Sie wichtige Dateien sichern, Informationen teilen, Videos online ansehen oder Musik hören möchten, Baidu Cloud Disk kann Ihre Anforderungen erfüllen. Viele Benutzer verstehen jedoch möglicherweise nicht die spezifische Verwendung der Baidu Netdisk-App. Dieses Tutorial führt Sie daher im Detail in die Verwendung der Baidu Netdisk-App ein. Wenn Sie immer noch verwirrt sind, folgen Sie bitte diesem Artikel, um mehr im Detail zu erfahren. So verwenden Sie Baidu Cloud Network Disk: 1. Installation Wählen Sie beim Herunterladen und Installieren der Baidu Cloud-Software zunächst die benutzerdefinierte Installationsoption aus.

BTCC-Tutorial: Wie kann ich die MetaMask-Wallet an der BTCC-Börse binden und verwenden? BTCC-Tutorial: Wie kann ich die MetaMask-Wallet an der BTCC-Börse binden und verwenden? Apr 26, 2024 am 09:40 AM

MetaMask (auf Chinesisch auch Little Fox Wallet genannt) ist eine kostenlose und beliebte Verschlüsselungs-Wallet-Software. Derzeit unterstützt BTCC die Bindung an die MetaMask-Wallet. Nach der Bindung können Sie sich mit der MetaMask-Wallet schnell anmelden, Werte speichern, Münzen kaufen usw. und bei der erstmaligen Bindung einen Testbonus von 20 USDT erhalten. Im BTCCMetaMask-Wallet-Tutorial stellen wir detailliert vor, wie man MetaMask registriert und verwendet und wie man das Little Fox-Wallet in BTCC bindet und verwendet. Was ist die MetaMask-Wallet? Mit über 30 Millionen Nutzern ist MetaMask Little Fox Wallet heute eines der beliebtesten Kryptowährungs-Wallets. Die Nutzung ist kostenlos und kann als Erweiterung im Netzwerk installiert werden

Erfahren Sie, wie Sie die neuen erweiterten Funktionen von iOS 17.4 „Schutz vor gestohlenen Geräten' nutzen. Erfahren Sie, wie Sie die neuen erweiterten Funktionen von iOS 17.4 „Schutz vor gestohlenen Geräten' nutzen. Mar 10, 2024 pm 04:34 PM

Apple hat am Dienstag das iOS 17.4-Update veröffentlicht, das eine Reihe neuer Funktionen und Korrekturen für iPhones bringt. Das Update enthält neue Emojis und EU-Nutzer können diese auch aus anderen App-Stores herunterladen. Darüber hinaus stärkt das Update auch die Kontrolle der iPhone-Sicherheit und führt weitere Einstellungsoptionen für den „Schutz gestohlener Geräte“ ein, um Benutzern mehr Auswahl und Schutz zu bieten. „iOS17.3 führt zum ersten Mal die Funktion „Schutz vor gestohlenen Geräten“ ein, die den vertraulichen Informationen der Benutzer zusätzliche Sicherheit verleiht. Wenn der Benutzer nicht zu Hause oder an anderen vertrauten Orten ist, erfordert diese Funktion, dass der Benutzer zum ersten Mal biometrische Informationen eingibt Zeit und nach einer Stunde müssen Sie Informationen erneut eingeben, um auf bestimmte Daten zuzugreifen und diese zu ändern, z. B. um Ihr Apple-ID-Passwort zu ändern oder den Schutz vor gestohlenen Geräten zu deaktivieren.

So erhöhen Sie die Festplattengröße in VirtualBox [Anleitung] So erhöhen Sie die Festplattengröße in VirtualBox [Anleitung] Mar 17, 2024 am 10:10 AM

Wir stoßen oft auf Situationen, in denen die vordefinierte Festplattengröße keinen Platz für weitere Daten bietet? Wenn Sie zu einem späteren Zeitpunkt mehr Festplattenspeicher der virtuellen Maschine benötigen, müssen Sie die virtuelle Festplatte und die Partitionen erweitern. In diesem Beitrag erfahren Sie, wie Sie die Festplattengröße in VirtualBox erhöhen. Erhöhen der Festplattengröße in VirtualBox Es ist wichtig zu beachten, dass Sie möglicherweise Ihre virtuellen Festplattendateien sichern möchten, bevor Sie diese Vorgänge ausführen, da immer die Möglichkeit besteht, dass etwas schief geht. Es empfiehlt sich immer, Backups zu haben. Der Vorgang funktioniert jedoch normalerweise einwandfrei. Fahren Sie Ihren Computer einfach herunter, bevor Sie fortfahren. Es gibt zwei Möglichkeiten, die Festplattengröße in VirtualBox zu erhöhen. Erweitern Sie die Festplattengröße von VirtualBox über die GUI mit CL

So verwenden Sie die Xiaomi Auto-App So verwenden Sie die Xiaomi Auto-App Apr 01, 2024 pm 09:19 PM

Die Xiaomi-Autosoftware bietet Funktionen zur Fernsteuerung des Fahrzeugs, mit denen Benutzer das Fahrzeug über Mobiltelefone oder Computer fernsteuern können, z. B. das Öffnen und Schließen der Türen und Fenster des Fahrzeugs, das Starten des Motors, die Steuerung der Klimaanlage und des Audios des Fahrzeugs usw. Folgendes ist Lassen Sie uns gemeinsam mehr über die Verwendung und den Inhalt dieser Software erfahren. Umfassende Liste der Funktionen und Nutzungsmethoden der Xiaomi Auto-App. 1. Die Xiaomi Auto-App wurde am 25. März im Apple AppStore gestartet und kann jetzt im App Store auf Android-Telefonen heruntergeladen werden: Erfahren Sie mehr über die wichtigsten Highlights und technischen Parameter von Xiaomi Auto und vereinbaren Sie einen Termin für eine Probefahrt. Konfigurieren und bestellen Sie Ihr Xiaomi-Auto und unterstützen Sie die Online-Abwicklung von Aufgaben zur Autoabholung. 3. Community: Informationen zur Marke Xiaomi Auto verstehen, Autoerfahrungen austauschen und das wundervolle Autoleben teilen: Das Mobiltelefon ist die Fernbedienung, Fernbedienung, Echtzeitsicherheit, einfach

See all articles