我用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;
前一阵子,但也许您仍然对此感兴趣。
的内部实现$(String)无法构建包含head或body标签的jQuery对象。它将简单地忽略它们并将所有元素向上移动。
$(String)
head
body
因此,如果您的字符串例如
<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')
希望有帮助。