dedlfix: jQuery, Bedeutung eines Selectors

Beitrag lesen

Tach!

es empfiehlt sich schon deshalb grundsätzlich, geöffnete Elemente auch wieder zu schließen, weil die Regeln für die Ausnahmen vielfältig und wenig intuitiv sind.

Es handelt sich bei dem Argument für die jQuery()-Funktion nicht um ein HTML-Dokument. Insofern liegt die Relevanz der Regeln für (vollständige) HTML-Dokumente an der Stelle zwischen nur teilweise anwendbar und irrelevant. Vielmehr kommt es auf die dokumentierte Arbeitsweise der Funktion an.

When the parameter has a single tag (with optional closing tag or quick-closing) — $( "<img />" ) or $( "<img>" ), $( "<a></a>" ) or $( "<a>" ) — jQuery creates the element using the native JavaScript .createElement() function.

createElement() wiederum möchte einen nackigen Elementnamen haben. Am Ende bleibt also ein p übrig, egal ob du ein schließendes Tag hinschreibst oder nicht. Deswegen ist es in dem Fall nutzlos, das Element im Sinne der HTML-Syntaxregeln zu schließen.

Die Arbeitsweise ist anders, wenn es nicht nur ein einzelnes und attributloses Element ist:

If the HTML is more complex than a single tag without attributes [...] the actual creation of the elements is handled by the browser's .innerHTML mechanism.

Dann lohnt es sich schon eher den HTML-Regeln Aufmerksamkeit zu schenken. Jedoch haben die Browser eingebaute Korrekturmechanismen, so das bei einfachen Konstrukten (ein einzelnes Element mit Attributen) sich ebenfalls nicht lohnt, ein schließendes Tag anzufügen. Lediglich bei noch komplexeren HTML-Fragmenten mit mehreren Elementen, besonders wenn sie nicht verschachtelt sein sollen, würde ich die Empfehlung aussprechen, die Endtags zu notieren. Für die optionalen und besonders die nutzlosen Fälle würde ich hingegen keine Regel aussprechen, sondern nur auf die Dokumentation verweisen. Empfehlungen, das Endtag unter keine Umständen wegzulassen, würde ich aber mit dem Hinweis auf dessen Nutzlosigkeit bei einzelnen attributlosen Elementen kontern.

Im konkreten Fall dürfte beispielsweise das </p> vor dem <button> nicht weggelassen werden.

Irrelevant. Da wird kein HTML-Dokument erstellt, das syntaktisch korrekt sein sollte, sondern es werden Elemente ins DOM gehängt. Diese Elemente sind bereits durch die vorhergehenden Funktionsaufrufe in einer für den Browser intern relevanten Art und Weise erstellt worden. Deren Repräsentation als HTML-Code spielt an der Stelle keine Rolle mehr.

dedlfix.