gpt4 book ai didi

jquery无法通过id找到div

转载 作者:行者123 更新时间:2023-12-01 02:16:24 24 4
gpt4 key购买 nike

我有一个ajax调用,我正在尝试解析#viewport返回的页面,从而删除返回页面的页眉和页脚。但 find() 无法找到该 div。

我原来的功能:

        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。

我知道它肯定在那里,因为我用以下解决方法替换了成功处理程序:

        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);
}

我错过了什么吗?解决方法有效,只是丑陋。

非常感谢!

最佳答案

如果'#viewport'位于响应 HTML 的顶层,您需要 .filter() 相反,因为 .find()只查看顶级元素的内部

   success: function(data) {
alert(data);
var respHTML = $(data).filter("#viewport");
alert(respHTML.length);
$("#contacts_sidebar").html(respHTML);
}

将 HTML 传递给 jQuery 时,您不能依赖于查找 <html> <head> <body>以跨浏览器的方式标记。

如果您的回复确实包含整个 HTML 文档,如果可能的话,我会将其缩减为仅您实际想要的内容。

另一种选择可能是这样做:

var respHTML = $('<div>' + data + '</div>').find("#viewport");

...但我不能保证结果。

关于jquery无法通过id找到div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4641226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com