0

我正在尝试过滤 ajax 响应,以便获得特定 div 标签的内容。但它总是返回空。这是jQuery片段。任何想法可能是错的。

$(document).ready(function(){
   $.ajax({
    url:"/testjson.jsp",
    success:function(result){
         var html=result;
         var a=<%=compid%>.id;// gives the div id - jsonoutd36fd7bd8074e310RECID
         alert(a);// This alerts the div id
         var htmlFiltered = $(html).find($(a)).text();
         alert(htmlFiltered);// This alerts empty.

   }});
});
4

4 回答 4

3

尝试这个:

var htmlFiltered = $(html).find($('#'+a)).text();
于 2013-05-16T13:32:56.707 回答
1
var a='#'+<%=compid%>.id;

...如果你想为你的发现保持干净,然后装扮一个 var。

于 2013-05-16T13:34:48.160 回答
0

该解决方案基于来自服务器的响应的样子。另外,您需要修复ID。如果没有#,您将寻找一个元素。


与父母

如果响应嵌套在父标签内,那么您正在做的事情将适用于将 a 添加#到您的 id 中。

响应标记:

<div>
   <div id="someId1"></div>
   <div id="yourId"></div>
   <div id="someId2"></div>
</div>

JavaScript:

var a = "yourId";
var htmlFiltered = $(html).find("#" + a).text();

没有父母

如果响应没有包含内容的父节点,则需要添加父节点或使用过滤器。您还必须修复 id。

响应标记:

<div id="someId1"></div>
<div id="yourId"></div>
<div id="someId2"></div>

JavaScript:

var a = "yourId";
var htmlFiltered = $(html).filter("#" + a).text();

或者

var a = "yourId";
var htmlFiltered = $("<div/>").html(html).find("#" + a).text();
于 2013-05-16T13:50:55.720 回答
0

您需要使用#here来选择id

$(html).find("#"+a).text();
于 2013-05-16T13:33:38.530 回答