我的ajax响应是动态创建的,它可以是:
<div id="one">Test One</div>
或
<div id="two">Test Two</div>
我知道如何通过ID从ajax响应中获取元素,但是如果我不知道ID并想要检查它会怎么样?
我试图像下面这样得到它,但是两个console.logs输出&#34; undefined&#34;:
$.ajax({
type: 'POST',
url: 'file.php',
success: function(result)
{
console.log ($(result).get(0).id); // undefined
console.log ($(result).attr('id')); // undefined
}
});
答案 0 :(得分:1)
您将收到该字符串,因此首先要解析它:
var parsed = $($.parseHTML(result));
...然后从得到的jQuery对象的第一个元素中获取id
:
var id = parsed.first().attr("id");
// or
var id = parsed[0].id; // If you know for sure there will be at least one element
更新:在评论中,您说它可能会在其前面发表评论,例如
<!-- comment --> <div id="two">...</div>
而不仅仅是
<div id="two">...</div>
如果是这样,你需要通过获取第一个元素来略微改变id
(跳过注释节点,如果解析的话,你将在jQuery对象中拥有它们)以上):
var id = parsed.filter("*").first().attr("id");
filter
仅匹配元素,而不是评论或文本节点。
直播示例:
function success(result) {
var parsed = $($.parseHTML(result));
log("ID is " + parsed.filter("*").first().attr("id"));
}
success('<!-- blah blah --><div id="one">Test One</div>');
success('<div id="two">Test Two</div>');
function log(msg) {
$("<p>").text(msg).appendTo(document.body);
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
&#13;
注意:可以通过将字符串直接传递给$()
来解析它,但如果字符串不是&#34;&#34;看起来像&#34; HTML符合jQuery的自动检测,它可能会尝试将字符串解释为CSS选择器。这就是我们$.parseHTML
为什么不明确的原因。