J'ai une grosse chaîne HTML contenant plusieurs nœuds enfants.
Est-il possible de construire un objet DOM jQuery en utilisant cette chaîne?
J'ai essayé $(string)
mais cela ne renvoie qu'un tableau contenant tous les nœuds individuels.
Je cherche à obtenir un élément sur lequel je peux utiliser la fonction .find ().
javascript
jquery
html
utilisateur1033619
la source
la source
Réponses:
Mettre à jour:
Depuis jQuery 1.8, nous pouvons utiliser $ .parseHTML , qui analysera la chaîne HTML en un tableau de nœuds DOM. par exemple:
DEMO
DEMO
Que se passe-t-il dans ce code:
$('<div/>')
est un faux<div>
qui n'existe pas dans le DOM$('<div/>').html(string)
ajoutestring
dans ce faux en<div>
tant qu'enfants.contents()
récupère les enfants de ce faux en<div>
tant qu'objet jQuerySi vous voulez
.find()
travailler, essayez ceci:DEMO
la source
.find()
également effectuer l' opération, vérifiez la démostring = '<input type="text" value="val" />'
$("<div/>")
, pourquoi ne pouvez-vous pas faire$(string)
?Depuis jQuery 1.8, vous pouvez simplement utiliser parseHtml pour créer votre objet jQuery:
J'ai créé un JSFidle qui démontre ceci: http://jsfiddle.net/MCSyr/2/
Il analyse la chaîne HTML arbitraire dans un objet jQuery et utilise find pour afficher le résultat dans un div.
la source
Cela crée un objet jQuery factice dans lequel vous pouvez placer la chaîne au format HTML. Ensuite, vous n'avez que les enfants.
la source
.filter()
place de.find()
.Il existe également une excellente bibliothèque appelée cheerio conçue spécialement pour cela.
la source
J'utilise ce qui suit pour mes modèles HTML:
Remarque: en supposant que vous utilisez jQuery
la source
la raison pour laquelle $ (string) ne fonctionne pas est que jquery ne trouve pas de contenu html entre $ (). Par conséquent, vous devez d'abord l'analyser en html. une fois que vous avez une variable dans laquelle vous avez analysé le html. vous pouvez alors utiliser $ (string) et utiliser toutes les fonctions disponibles sur l'objet
la source