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("*"));