2017-09-14 81 views
0

我已将$.get()的结果存储到名为questionsdata的变量中。这些数据基本上是一堆具有独特ID的div。我希望找到一个使用ID的div。我可以理解这是行不通的,但我不知道会发生什么。从变量中的HTML数据中选择一个特定元素

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

在变量示例数据:

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

什么是'questionsdata'? –

+0

你基本上想在'string'中找到'value'?我相信'questionsdata'包含您显示为示例数据的'html'标记 – Se0ng11

回答

1

你可以很容易地解析存储在使用jQuery文本变量HTML - 它并不需要被添加到DOM。

由于#593处于最高级别,所以.find在搜索儿童时无法找到。相反,你可以使用.filter,如果它总是会在顶层,或者在另一个<div>包裹 - 无论是在源或通过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>

+1

谢谢!事实上,没有意识到找到所选的搜索孩子是我的问题 - 过滤器完美运作。 – Daniel

1

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> 
 

 

+0

当两个答案是正确的时候不太确定该怎么做。我选择了@ freedomm-m's,因为它解决了我所做的特定错误(使用find而不是filter),但我可以看到你的答案同样正确。 – Daniel

+1

@丹尼尔你可以upvote有用的答案,即使你接受一个不同的(只是upvote接受的以及:)) –

+0

@Daniel实际上看到更新的正确答案 –

0

您的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"); 

你的HTML

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

你的CSS

#container{display:none;} 
+0

有没有必要引起延迟(无论次要* this * case)将html添加到DOM以查找特定元素。事实上,如果您现有的html包含具有相同ID的节点,这可能会导致错误。最后,考虑使用代码片段。 –

+0

好的,但如果我们处理Ajax所需的数据,所以每次都会有所不同,所以将它添加到容器并不是一个坏主意,关于包含相同ID的节点我认为构造代码是我们必须保重。 – Osama

相关问题