Beim Parsen ignoriert jQuery alles, was keine Tabelle ist, und das Dokument entfernt das Tabellen-Tag

9

Nicht sicher, ob dies ein Fehler oder eine Funktion ist. Beim Analysieren von HTML mit Tabellenelementen außerhalb einer Tabelle ignoriert jQuery Nicht-Tabellenelemente.

%Vor%

wurde in $(html) wird zu

übergeben %Vor%

Bei der Übergabe des gleichen HTML in plain Javascript wird element.innerHTML = html

%Vor%

Hier ist es in Aktion Ссылка

EDIT: Gleich nachdem ich das gepostet habe, habe ich gemerkt, dass jQuery die Tabellenelemente wegen des entgegengesetzten Verhaltens im dom entfernt.

    
Addison Brickey 22.12.2017, 07:01
quelle

1 Antwort

4

Zunächst einmal ist das kein gültiger HTML-Code.

Ja. Der Jquery-Parser reinigt das.

Wenn Sie sich Quellcode jquery ansehen, verwendet die HTML-Funktion parseHTML, bevor sie tatsächlich innerHTML .

Und das parseHTML ruft ein buildFragment auf und entfernt alle unechten Elemente in der Zeichenfolge.

Im Folgenden finden Sie einen Teil des Quellcodes der buildFragment-Funktion

%Vor%

Ja, hier wird der tatsächlich übergebene String ausgewertet und DOM-Knoten erstellt.

Und schließlich sollte div nicht direkt als Element in einer Tabelle verwendet werden. Kann in td und tr eingeschlossen werden.

Warum hat jQuery das genau ignoriert? weil das nicht echt und gültig ist. Wenn Sie sich die HTML-Spezifikation der Tabelle genau ansehen, können Sie das nur tun die angegebenen Tags. In einem Tabellentag

%Vor%

Und in jedem Tag

%Vor%

Wie Sie sehen, ist kein div-Tag direkt erlaubt.

Allerdings im Fall von Vanille-JavaScript innerHTML , keine solche Analyse passiert und der Browser interpretiert direkt die Zeichenfolge, die dom-Knoten zur Verfügung gestellt wird, und fügt sie dem Dokument hinzu.

  

Entfernt alle untergeordneten Elemente des Elements, analysiert die Inhaltszeichenfolge und ordnet die resultierenden Knoten als untergeordnete Elemente des Elements zu.

    
ꜱᴜʀᴇꜱʜ ᴀᴛᴛᴀ 22.12.2017, 08:13
quelle

Tags und Links