web-dev-qa-db-fra.com

Rechercher un élément dans une chaîne HTML

Supposons que j'ai

var testHTML = "<div id='demo_div'></div>";

Je veux obtenir au-dessus de div un objet JQuery à manipuler. J'essaie de le trouver avec:

 var found = $(testHTML).find("#demo_div");

et avec:

 var found = $(testHTML).find("div");

Les deux sans chance. J'ai vide trouvé variable. Qu'est-ce que je fais mal?

P.S. Oui je sais que je peux avoir un accès direct à mon div avec 

$("#demo_div") 

mais je ne peux pas le faire dans mon cas - j'ai besoin de l'obtenir à partir d'un HTML simple qui sera assigné à une variable comme dans mon exemple avec testHTML var.

UPDATE: Même si je n'ai pas root div élément comme ici:

var testHTML = "<html><div id='demo_div'></div></html>";

Je ne peux pas utiliser find pour naviguer dans l'élément div.

19
Michael Z

Le problème est que votre div est l'élément racine de la collection. Vous devez donc utiliser .filter() au lieu de .find() (qui ne regarde que les éléments descendants):

var found = $(testHTML).filter("#demo_div");

Je suppose que votre chaîne HTML est plus complexe que celle de la question, sinon vous n'avez rien d'autre à faire que $(testHTML) et vous aurez un objet jQuery contenant ce seul élément.

49
James Allardice

Vous pouvez utiliser la fonction .search() du javascript lui-même.

testHTML.search('demo_div')>-1
0
Manoj De Mel