小编典典

用jQuery解析完整的HTML页面

ajax

我用ajax加载html。我想将结果加载到jquery对象中。我试过了,但返回null。我怎样才能做到这一点?我有一个完整的页面,包括doctype,head元素和body元素。

var test = $(result); //result contains html code
alert(test.html()); //returns null

我使用此功能加载数据。

function ajaxLoadContent(element) {
    $.ajax({
        url: "url to the page",
        type: "GET",
        timeout: 5000,
        datattype: "html",
        success: function(result) {
        //handler
        },
    });
    return false;

阅读 652

收藏
2020-07-26

共1个答案

小编典典

前一阵子,但也许您仍然对此感兴趣。

的内部实现$(String)无法构建包含headbody标签的jQuery对象。它将简单地忽略它们并将所有元素向上移动。

因此,如果您的字符串例如

<html>
  <head>
    <meta ...>
  </head>
  <body>
    <div id="a"/>
  </body>
</html>

生成的jQuery对象将是两个元素的数组

[<meta ...>, <div id="a" />]

为了获得一个类似bodyjQuery的对象,在将其传递给jQuery之前,请剪切除主体内容以外的所有内容:

body = '<div id="body-mock">' + html.replace(/^[\s\S]*<body.*?>|<\/body>[\s\S]*$/ig, '') + '</div>';
var $body = $(body);

现在事情按预期工作了。例如

$body.find('#a')

希望有帮助。

2020-07-26