Wie behandelt jQuery Kommentarelemente?

8

Ich dachte immer, dass jQuery nur auf DOM -Elementen operiert, das sind die Knoten, die nodeType == 1 haben.

Ich bin jedoch schockiert, dass beim Erstellen von HTML $("<p> </p><!-- comment -->") Folgendes eintritt:

[p, Comment { data=" comment ", length=21, nodeName="#comment", more...}] (Firebug-Formatierung)

Ich akzeptierte etwas HTML von AJAX und ein DOM-Kommentar wurde auf diese Weise erstellt und an eine Funktion übergeben, die nur für Elemente gilt: defaultView.getComputedStyle( elem, null )

Gibt es einen sauberen Ausweg?

    
tillda 22.11.2011, 15:12
quelle

2 Antworten

5
  

Ich dachte immer, dass jQuery nur auf DOM-Elementen funktioniert

Nur die Selektoren wählen DOM-Elemente aus. In Ihrem Fall erstellen Sie Knoten aus der von Ihnen bereitgestellten HTML-Zeichenfolge. So analysiert jQuery die Zeichenfolge und gibt Ihnen die Knoten zurück, nach denen Sie suchen.

Um es zu reinigen, machen Sie .filter() .

%Vor%     
RightSaidFred 22.11.2011, 15:16
quelle
5

Hmm, ein interessantes Problem. Nachdem ich ein bisschen herumgespielt habe, habe ich herausgefunden, dass man sie mit .filter mit dem Universalselektor ( * ).

%Vor%     
Alex Turpin 22.11.2011 15:16
quelle