这是一个非常简单的问题,我似乎也找不到一个好的答案。
$.get('/myurl.html', function(response){
console.log(response); //works!
console.log( $(response).find('#element').text() ); //null :(
}, 'html');
我只想尝试遍历我的html响应。到目前为止,我能想到的唯一可行的方法是将正则表达式置于body标签内部,并将其用作字符串来创建可遍历的jQuery对象。但这似乎很愚蠢。有人想指出正确的方法吗?
也许是我的HTML?
<html>
<head>
<title>Center</title>
</head>
<body>
<!-- tons-o-stuff -->
</body>
</html>
这也很好,但不符合我的需要:
$('#myelem')。load('/ myurl.html #element');
答案 0 :(得分:7)
它失败了,因为它不喜欢<html>
和<body>
。
使用此处描述的方法:A JavaScript parser for DOM
$.get('/myurl.html', function(response){
var doc = document.createElement('html');
doc.innerHTML = response;
console.log( $("#element", doc).text() );
}, 'html');
我认为上述情况应该有效。
答案 1 :(得分:1)
当jQuery解析HTML时,它通常会删除html和body标签,因此如果删除了html和body标签,那么当你搜索的元素位于文档结构的顶层时,{{1}函数可能无法找到您要搜索的元素。
有关详细信息,请参阅此问题 - Using jQuery to search a string of HTML
答案 2 :(得分:0)
试试这个:
$("#element", $(response)).text()
这将在$(响应)中搜索元素ID,将$(响应)视为DOM对象。
答案 3 :(得分:-1)
也许我误解了一些事情,但
.find('#element')
匹配ID为“element”的元素,如
<p id="element">
由于我没有看到“大量的东西”HTML,我不明白你想要找到的元素。