Comment jQuery traite-t-il les éléments de commentaire?

J’ai toujours pensé que jQuery ne fonctionnait que sur les éléments DOM, c’est-à-dire les nœuds qui avaient nodeType == 1 .

Cependant, je suis choqué que lors de la création de HTML $("

") traduise par:

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

J’ai accepté un peu de code HTML par AJAX et un commentaire DOM a été créé de cette manière et transmis quelque part à une fonction applicable uniquement aux éléments: defaultView.getComputedStyle( elem, null )

Y a-t-il une solution propre à cela?

J’ai toujours pensé que jQuery ne fonctionnait que sur des éléments DOM

Ses sélecteurs ne sélectionnent que des éléments DOM. Dans votre cas, vous créez des nœuds à partir de la chaîne HTML que vous avez fournie. Donc, jQuery parsing la chaîne et vous redonne les nœuds que vous demandez.

Pour le nettoyer, faites un .filter() .

 var els = $("

").filter(function() { return this.nodeType === 1; });

Hmm, un problème intéressant. Après quelques instants, j’ai découvert que vous pouvez les supprimer en utilisant .filter avec le sélecteur universel ( * ).

 var a = $("

"); console.log(a); console.log(a.filter("*"));