6

这是一个超级简单的问题,我似乎也找不到一个好的答案。

$.get('/myurl.html', function(response){
     console.log(response); //works!
     console.log( $(response).find('#element').text() ); //null :(
}, 'html');

我只是想遍历我的 html 响应。到目前为止,我能想到的唯一可行的方法是将正则表达式添加到正文标签内,并将其用作字符串来创建我的可遍历 jQuery 对象。但这似乎很愚蠢。有人愿意指出正确的方法吗?

也许它是我的html?

<html> 
    <head> 
       <title>Center</title> 
    </head> 
    <body> 
        <!-- tons-o-stuff -->
    </body>
</html>

这也可以正常工作,但不适合我的需要:

$('#myelem').load('/myurl.html #element');

4

4 回答 4

7

它失败了,因为它不喜欢<html>and <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');

我认为以上应该可行。

于 2012-04-05T16:53:12.603 回答
1

当 jQuery 解析 HTML 时,它通常会去除 html 和 body 标签,因此如果您要搜索的元素在 html 和 body 标签被删除后位于文档结构的顶层,那么该find函数可能无法定位您正在搜索的元素。

有关更多信息,请参阅此问题 -使用 jQuery 搜索 HTML 字符串

于 2012-04-05T16:54:59.973 回答
0

试试这个:

$("#element", $(response)).text()

这将在 $(response) 中搜索元素 ID,将 $(response) 视为 DOM 对象。

于 2012-04-05T16:47:20.870 回答
-1

也许我误解了什么,但是

.find('#element')

匹配 ID 为“element”的元素,例如

<p id="element">

由于我没有看到“大量的东西”HTML,我不明白您要查找哪些元素。

于 2012-04-05T16:57:00.753 回答