2009-03-16 4 views

Antwort

11

Siehe "MutationEvent" Elemente hier: https://developer.mozilla.org/en/DOM/DOM_event_reference aber diese sind veraltet.

jQuery bietet nun eine Möglichkeit, Ereignisse zu bestehenden und zukünftigen Elemente zur Befestigung an einen Wähler entsprechen: http://docs.jquery.com/Events/live#typefn

Es kann ein Trick sein, das Sie aus Mangel an richtigen DOM Knoten Änderung Informationen nutzen könnten.

+0

DOMtree Verbindung ist tot ... – eruciform

+0

danke, mit einem Link zum MDN behoben;) –

+3

Mutationsereignisse sind veraltet – Raynos

1

Siehe mutation-summary Bibliothek. Es basiert auf einer neuen Browser-API namens DOM Mutation Observer.

+0

Oder wenn Sie die Bibliothek nicht benötigen, ist die DOM MutationObserver API jetzt in Chrome 18+, Firefox 14+, Safari 6+, IE11 + verfügbar. Es gibt ein gutes Beispiel [hier] (https://hacks.mozilla.org/2012/05/dom-mutationobserver-reacting-to-dom-changes-without-killing-browser-performance/) – foz

+0

Mutation Observer Polyfill für ältere Browser: https://github.com/webcomponents/webcomponentsjs/tree/master/src/MutationObserver – Pylinux

1

Dies ist nur für Debug-Zwecke:

Firebug ermöglicht derzeit Stützpunkte auf HTML-Knoten setzen.

Sie haben den HTML-Inspektoren zu öffnen, direkt auf einem Knoten klicken und Sie haben folgende Möglichkeiten:

  • Interrupt auf Attributänderung
  • Interrupt auf Kind add/
  • Interrupt entfernen
  • auf entfernen

Sobald Sie den Haltepunkt erreicht haben, können Sie auch den Call-Stack durchsuchen.

Google Chrome hat eine ähnliche Funktion.

1

Vor kurzem habe ich ein Plugin geschrieben haben, die genau das tut - jquery.initialize

Sie es verwenden die gleiche Art und Weise wie .each Funktion

$(".some-element").initialize(function(){ 
    $(this).css("color", "blue"); 
}); 

Der Unterschied von .each ist - es Ihre Wähler, in diesem Fall nimmt .some-element und warten auf neue Elemente mit diesem Selektor in der Zukunft, wenn ein solches Element hinzugefügt wird, wird es auch initialisiert.

In unserem Fall Initialisierungsfunktion ändern Sie einfach die Elementfarbe in blau. Also, wenn wir neues Element hinzufügen werden (egal ob mit Ajax oder sogar F12 Inspektoren oder etwas) wie:

$("<div/>").addClass('some-element').appendTo("body"); //new element will have blue color! 

Plugin wird es sofort init. Auch Plugin stellt sicher, dass ein Element nur einmal initialisiert wird. Also, wenn Sie Element, dann .deatch() es von Körper und dann fügen Sie es wieder hinzu, wird es nicht erneut initialisiert werden.

$("<div/>").addClass('some-element').appendTo("body").detach() 
    .appendTo(".some-container"); 
//initialized only once 

Plugin basiert auf MutationObserver - es auf IE9 arbeiten und 10 mit Abhängigkeiten wie auf dem readme page beschrieben.

Verwandte Themen