Daniel
Daniel

Reputation: 792

Select a specific element from HTML data in a variable

I have stored the results of $.get() into a variable called questionsdata. The data is basically a bunch of divs with unique ids. I wish to find just one div using an id. I can kind of understand that this wouldn't work but I don't know what would.

$(questionsdata).find("#593");

Example data in the variable:

<div id="591">Stuff</div>
<div id="592">Stuff</div>
<div id="593">Stuff</div>
<div id="594">Stuff</div>

Upvotes: 0

Views: 83

Answers (3)

asdf_enel_hak
asdf_enel_hak

Reputation: 7650

var questionsdata = '<div id="x"><div id="a591">Stuff1</div><div id="b592">Stuff2</div><div id="c593">Stuff3</div><div id="d594">Stuff4</div></div>'
 

console.log($('#b592',questionsdata ).html())
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

 

Upvotes: 1

Osama
Osama

Reputation: 3030

Your JavaScript

var data='<div id=591>Stuff</div>
<div id="592">Stuff</div>
<div id="593">Stuff</div>
<div id="594">Stuff</div>';
var $data = $(data).appendTo('#container");
var my_div=$("#container").find("#593");

Your HTML

< div id="container"></div>

Your CSS

#container{display:none;}

Upvotes: 0

fdomn-m
fdomn-m

Reputation: 28621

You can parse HTML stored in a text variable with jquery quite easily - it doesn't need to be added to the DOM.

As #593 is at the top level, .find will not find as it searches children. Instead you could use .filter if it will always be at the top level, or wrap in another <div> - either at the source or via jquery:

var data = '<div id="591">Stuff1</div><div id="592">Stuff2</div><div id="593">Stuff3</div><div id="594">Stuff4</div>';

console.log($(data).find("#593").length)

// Use .filter
console.log($(data).filter("#593").text())

// Or wrap with a div
console.log($("<div>").html(data).find("#593").text())
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Upvotes: 1

Related Questions