Felix Riesterer: jQuery: img.on('load') auf Funktion beschränken

Beitrag lesen

Lieber Onkel Schnitzel,

zwei Dinge sind mir aufgefallen:

1.)

img.insertBefore('#bild');

Wenn insertBefore die original-DOM-Funktion eines Elementknotens ist (und keine jQuery-Verbiegung), dann benötigst Du noch einen zweiten Parameter bei diesem Aufruf. Die Methode <http://de.selfhtml.org/javascript/objekte/node.htm#insert_before@title=<node>.insertBefore> will nämlich einen _Kind-_konten einfügen. Mir scheint dass img daher das falsche Objekt ist, dessen insertBefore-Methode man hier benötigt, denn ein <img>-Element kann keine Kindknoten aufnehmen. Daher vielleicht besser so:

$('#bild').insertBefore(img, $('#bild').firstChild)).

Noch besser sicherlich so:

var myParent = $('#bild');  
  
myParent.insertBefore(img, myParent.firstChild)

Die Reihenfolge der Parameter bestimmt dann die tatsächliche Position: Steht der vorhandene Kindknoten als zweiter Parameter, wird der einzufügende Knoten davor eingefügt, steht der Kindknoten als erster Parameter, wird der einzufügende Knoten dahinger eingefügt.

2.)

$('div').on('load', '#neu', function() {...}

Wenn ich die jQuery-Syntax richtig verstehe (ich nutze jQuery nicht), dann willst Du wohl jedem <div>-Element Deines Dokuments einen onload-Eventhandler verpassen. Der wird niemals gefeuert! Das document-Objekt feuert den onload-Event, wenn alle nachzuladenden Bestandteile der Seite im Browser verfügbar sind. Meines Wissens gilt das nicht für Kindknoten - wobei man dem <body>-Element einen onload-Eventhandler zuweisen kann (per onload-Attribut), der in demselben Moment ausgelöst wird.

Da Dein Dokument längst fertig geladen hat, wird niemals ein onload-Event irgendwelcher HTML-ELemente ausgelöst werden, es sei denn, da muss externer Inhalt nachgeladen werden (also alles, was ein src-Attribut haben kann). Damit muss Dein onload-Event an ein <img>-Element gebunden werden!

Was jetzt Dein Problem auslöst, vermag ich nicht zu beurteilen, da ich nicht genau weiß, was jQuery alles mit den Members einer HTML-Node macht.

Liebe Grüße,

Felix Riesterer.

--
ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)