appendTo (jQuery) hängt nichts ein
Enrico
- javascript
0 Matthias Apsel0 Enrico
0 Der Martin0 ichbinich
Hallo,
ich habe ein Tabellenkonstrukt ohne die Tags <thead>
, <tbody>
und <tfoot>
, das in dessen weiterem Verlauf u.a. die zwei benannten Tabellenreihen "Hauptmenue" und "Untermenue" enthält:
<tr name="Hauptmenue"></tr>
<tr name="Untermenue"></tr>
Über jQuery möchte ich nun jeweils Inhalte einhängen:
$('[name=Hauptmenue]').appendTo(AufbauHauptmenue);
$('[name=Untermenue]').appendTo(AufbauUntermenue);
Beide Variablen AufbauHauptmenue und AufbauUntermenue haben jeweils Inhalte, dessen habe ich mir unmittelbar vor dem geplanten Einhängen der Inhalte vergewissert.
Leider wird aber nichts eingehängt, eine/mehrere Warnung/en oder gar Fehlermeldung/en über die Konsole von Firefox erhalte ich keine. Es liegen auch keine Konflikte bei den Variablenbenennungen, beispielsweise gleiche Namen für unterschiedliche Variablen oder Felder vor und der HTML-Code weißt auch keine Fehler auf, d.h. alle Tags werden korrekt geöffnet und auch wieder in der richtigen Reihenfolge geschlossen. jQuery habe ich selbstverständlich auch korrekt eingebunden. Auch spielt es keine Rolle, ob ich einfache Anführungsstriche (?) oder die "gewohnten" Anführungszeichen bei der appendTo
-Anweisung/Methode verwende.
Kann man anhand dieser Informationen sagen, warum nichts eingehängt wird oder braucht ihr noch den Code, um mir weiterhelfen zu können?
Vielen Dank und Gruß
Enrico
Om nah hoo pez nyeetz, Enrico!
ich habe ein Tabellenkonstrukt ohne die Tags
<thead>
,<tbody>
und<tfoot>
, das in dessen weiterem Verlauf u.a. die zwei benannten Tabellenreihen "Hauptmenue" und "Untermenue" enthält:
<tr name="Hauptmenue"></tr>
<tr name="Untermenue"></tr>
> Über jQuery möchte ich nun jeweils Inhalte einhängen:
> ~~~javascript
> $('[name=Hauptmenue]').appendTo(AufbauHauptmenue);
> $('[name=Untermenue]').appendTo(AufbauUntermenue);
>
0. Zu deiner Frage kann ich nichts beitragen.
1. Verwechsle nicht Tag und Element.
2. Auch wenn du im Quelltext kein tbody-Element verwendest, legen manche Browser eines an.
3. eine Tabelle dient zur Darstellung tabellarischer Daten.
4. Deshalb handelt es sich um einen Beitrag von jQuery zur Förderung semantischen Markups ;-)
Matthias
Hallo Matthias,
- Zu deiner Frage kann ich nichts beitragen.
hmmm, schade.
- Auch wenn du im Quelltext kein tbody-Element verwendest, legen manche Browser eines an.
Nachdem ich aber die tr's namentlich anspreche, dürfte dies somit auch keine Rolle spielen, und kann, meiner Meinung nach, somit als mögliche Ursache auch ausgeschlossen werden.
Gruß
Enrico
Hi,
<tr name="Hauptmenue"></tr>
<tr name="Untermenue"></tr>
nicht gut, denn tr-Elemente dürfen kein name-Attribut haben. Und AFAIK dürfen sie auch nicht leer sein, sondern müssen mindestens ein td- oder th-Element enthalten. Eventuell ignoriert der Browser das daher geflissentlich, so dass der spätere Zugriff über Javascript
> ~~~javascript
$('[name=Hauptmenue]').appendTo(AufbauHauptmenue);
> $('[name=Untermenue]').appendTo(AufbauUntermenue);
kein Element findet, auf das das gewünschte Merkmal zutrifft.
Leider wird aber nichts eingehängt, eine/mehrere Warnung/en oder gar Fehlermeldung/en über die Konsole von Firefox erhalte ich keine.
Dass die Fehlerkonsole leer bleibt, wundert mich allerdings. Aber es könnte natürlich sein, dass jQuery diese Fehlerbedingung schon kontrolliert abfrühstückt und einfach "nichts" tut.
Auch spielt es keine Rolle, ob ich einfache Anführungsstriche (?) oder die "gewohnten" Anführungszeichen bei der appendTo
-Anweisung/Methode verwende.
Natürlich nicht. Das hat in Javascript noch nie eine Rolle gespielt.
So long,
Martin
Hallo Martin,
wenn <tr> nicht leer sein darf, welche Elemente dürf(t)en leer sein und/oder namentlich angesprochen werden, damit ich den Code einhängen kann?
Gruß
Enrico
Bin jetzt auf der richtigen Spur und hoffe, dass ich es jetzt hin bekomme.
Gruß
Enrico
Hallo,
<tr name="Hauptmenue"></tr>
<tr name="Untermenue"></tr>
Ersetze @name durch @id, falls die beiden Elemente nur einmal vorkommen - falls sie mehrmals vorkommen durch @class.
> Über jQuery möchte ich nun jeweils Inhalte einhängen:
> ~~~javascript
> $('[name=Hauptmenue]').appendTo(AufbauHauptmenue);
> $('[name=Untermenue]').appendTo(AufbauUntermenue);
>
Wieso verwendest du hier .appendTo()? Da die Elemente leer sind, macht es keinen Sinn, hier etwas "einzuhängen", nimm statt dessen .html(). Oder hast du eine Schleife, über die du jeweils einzelne td's einhängst? Dann befülle in der Schleife eine Variable und nimm dann erst recht .html(variable), das ist wesentlich performanter.
Beide Variablen AufbauHauptmenue und AufbauUntermenue haben jeweils Inhalte, dessen habe ich mir unmittelbar vor dem geplanten Einhängen der Inhalte vergewissert.
Enthalten sie auch semantisch korrekte Inhalte?
Kann man anhand dieser Informationen sagen, warum nichts eingehängt wird oder braucht ihr noch den Code, um mir weiterhelfen zu können?
Evtl. hast du vorher eine Abbruchbeddingung so dass der Code an dieser Stelle nicht ausgeführt wird, oder ...
Mehr wäre ins Blaue geraten und kann nur mit mehr Code ohne Raten untersucht werden...
vg ichbinich
Hallo,
Wieso verwendest du hier .appendTo()? Da die Elemente leer sind, macht es keinen Sinn, hier etwas "einzuhängen", nimm statt dessen .html().
"anzuhängen" ist hier das richtige Wort...
vg ichbinich
Hallo,
ich habe das jetzt anders gelöst und der letzten Tabellenreihe, an die die Inhalte angehängt werden sollen, mit einer id versehen und jetzt klappt zumindest die Ausgabe des Hauptmenüs.
Leider noch nicht die Aktualisierung über Ajax-Aufruf, aber das ist ein anderes Thema ^^
Gruß
Enrico