Anmerkung des Autors (pie6k). Ich habe diese Bibliothek vor ein paar Jahren erstellt und sie war damals schön. Jetzt sollten Sie für solche Dinge wahrscheinlich nicht jQuery verwenden und stattdessen React oder etwas Ähnliches verwenden. Danke schön. — 21.11.2018
Fehlerberichte werden weiterhin akzeptiert.
Das jQuery.initialize
Plugin wurde erstellt, um die Verwaltung dynamisch erstellter Elemente auf der Seite zu unterstützen.
jQuery.initialize durchläuft jedes Element, das mit dem Selektor übereinstimmt, und wendet die Rückruffunktion an. Anschließend wartet es auf Änderungen am Dokumentobjektmodell und wendet die Rückruffunktion auf alle neuen Elemente an, die in das Dokument eingefügt werden und mit dem ursprünglichen Selektor übereinstimmen.
$.initialize([selector], [callback]);
Dadurch können Entwickler einen Initialisierungsrückruf definieren, der immer dann angewendet wird, wenn ein neues Element, das mit dem Selektor übereinstimmt, in das DOM eingefügt wird. Es funktioniert auch für Elemente, die über AJAX geladen werden.
Einfache Demo – klicken Sie hier
$.initialize(".some-element", function() {
$(this).css("color", "blue");
});
Wenn nun aber auf der Seite ein neues Element erscheint, das mit dem Selektor .some-element
übereinstimmt, wird es sofort initialisiert. Die Art und Weise, wie ein neues Element hinzugefügt wird, ist nicht wichtig. Sie müssen sich nicht um Rückrufe usw. kümmern.
$("<div/>").addClass("some-element").appendTo("body"); //new element will have blue color!
Um die Beobachtung des Dokuments zu beenden, können Sie die Verbindung zum Beobachter trennen, indem Sie disconnect()
für die zurückgegebene MutationObserver
-Instanz aufrufen. Dadurch wird verhindert, dass sie weitere Benachrichtigungen empfängt, bis observe()
erneut aufgerufen wird. . Z.B,
var obs = $.initialize([selector], [callback]); // Returns MutationObserver
obs.disconnect();
target
Standardmäßig wird das gesamte Dokument auf Änderungen überwacht. Dies kann zu einer schlechten Leistung führen. Ein bestimmter Knoten im DOM kann durch Angabe eines Ziels beobachtet werden:
$.initialize(".some-element", function() {
$(this).css("color", "blue");
}, { target: document.getElementById('observe-this-element') });
Andernfalls wird als Ziel standardmäßig document.documentElement
verwendet.
observer
Es kann ein benutzerdefinierter MutationObserverInit
bereitgestellt werden. Wenn nicht angegeben, wird standardmäßig die interne Konfiguration verwendet.
Das Plugin basiert auf MutationObserver
. Es funktioniert auf IE9+ ( Hinweis unten lesen ) und jedem modernen Browser.
Hinweis: Damit es unter IE9 und IE10 funktioniert, müssen Sie MutationObserver-Polyfill hinzufügen – wie hier: https://github.com/webcomponents/webcomponentsjs
Leistungstest (danke an @bezborodow und @liuhongbo )
bower
und npm
kompatibel und fügen Sie einen erweiterten Leistungstest hinzu.