我有一个ajax调用,我想解析#viewport返回的页面,从而删除返回页面的页眉和页脚。但find()找不到div。jquery无法找到div的ID
我原来的功能:
function(event) {
$.ajax({
type: this.method,
url: this.action,
data: $(this).serialize(),
datatype: "html",
success: function(data) {
alert(data);
var respHTML = $(data).find("#viewport");
alert(respHTML.length);
$("#contacts_sidebar").html(respHTML);
}
});
return false;
}
在警报(数据)
,我绝对看到<div id="viewport">
,但alert(respHTML.length)
显示为0,如果我选择更改为“table.someclass”,它会找到它。但“head”和“body”等选择器也会返回0。
我知道它肯定有B/C I替换为以下解决方法成功的处理程序:
success: function(data) {
var respHTML;
var d=$(data);
for (i=0; i<d.length; i++) {
if (d[i]["id"] === "viewport") {
respHTML = d[i]["innerHTML"];
break;
}
}
$("#contacts_sidebar").html(respHTML);
}
我这么想吗?解决方法的工作,只是丑陋。
非常感谢!
你不会承诺为多个元素使用相同的“ID”值的罪,你会吗? – Pointy 2011-01-09 19:29:03
在查找ID之前是否已经将元素添加到DOM?或者它只是纯粹的HTML? – 2011-01-09 19:30:10
@Caspar Kleijne他通过编写`$(data)`隐式地将返回的HTML添加到文档片段中。 – Pointy 2011-01-09 19:31:10