Ich habe eine externe JavaScript-Bibliothek, um einige formatierte Inhalte zu generieren. Nennen wir es ExternalLibrary.GenerateGutterDivs()
Wird das DOM sofort mit jQuery aktualisiert?
Dieser Code erzeugt eine Tabellenstruktur mit einigen divs, so etwas wie:
<table>
<tr>
<td class="gutter">
<div>1</div>
<div>2</div>
<div>3</div>
...
</td>
<tr>
</table>
Sobald die Tabelle erzeugen war, ich die erzeugte DOM-Objekte manipulieren wollen, wie folgt:
<script type="text/javascript">
ExternalLibrary.generateGutterDivs();
alert("shomething"); //if I comment this I don't see the second alert
$("td.gutter > div").each(function(index, val)
{
alert("gutterfound");
});
</script>
Das Problem ist, dass, wenn ich die erste alert("something")
entferne, sehe ich nicht die zweite Warnung. Dieses make denken über das DOM vielleicht ist nicht sofort aufgefrischt. Weißt du, warum ich diese Situation erlebe?
Danke in fortgeschrittenem.
Side Kommentar: Sie sollte nicht sein [Tabellen für das Layout verwenden] (http://phrogz.net/CSS/WhyTablesAreBadForLayout .html). – Phrogz
Ihre Vermutung mag stimmen, aber ich glaube nicht, dass es so ist. Anstatt andere zu Rate zu ziehen, besteht der beste Weg zur Lösung Ihres Problems darin, einen abgespeckten Testfall zu erstellen. Löschen Sie alle HTML-, CSS- und JS-Dateien, die das Problem nicht beeinflussen. Dann tu es wieder und wieder, bis du wirklich, _really_ KEINEN überflüssigen Code hast, um das Problem zu verwirren. Wenn Sie diesen Code an andere weitergeben, können sie Ihr Problem schnell reproduzieren, Ihnen helfen, die Ursache zu verstehen, und Ihnen eine Lösung anbieten. _ (Und oft, im Prozess der Verringerung des Problems, werden Sie das Problem selbst herausfinden.) _ – Phrogz
Und erstellen Sie eine jsfiddle :) Aber im schlimmsten Fall: Lassen Sie 'generateGutterDivs' einen Rückruf akzeptieren (obwohl jetzt, dass ich denke darüber nach, dies könnte das Problem nicht lösen). –