Michael Z
Michael Z

Reputation: 4003

Find element at HTML string

Let's suppose I have

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

I want to get above div as JQuery object to manipulate with it. I try to find it with:

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

and with:

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

Both without luck. I have empty found variable. What am I do wrong?

P.S. Yes I know I can have direct access to my div with

$("#demo_div") 

but I can't do it in my case - I need to get it from plain HTML that will be assigned to some variable just like in my example with testHTML var.

UPDATE: Even if I have not root div element like here:

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

I can't use find for navigating div element.

Upvotes: 20

Views: 46768

Answers (2)

Manoj De Mel
Manoj De Mel

Reputation: 1005

You could use the .search() function of the javascript itself.

testHTML.search('demo_div')>-1

Upvotes: 1

James Allardice
James Allardice

Reputation: 166031

The problem is that your div is the root element in the collection, so you need to use .filter() instead of .find() (which only looks at descendant elements):

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

I'm assuming your actual HTML string is more complex than the one in the question, otherwise you don't need to do anything other than $(testHTML) and you will have a jQuery object containing that single element.

Upvotes: 51

Related Questions