我已经设法通过jQuery和ajax检索网页的html内容。 现在我想找到h1标签之间的值并显示它。 我怎么能在jQuery中做到这一点?
$.get(link, function(res){
//get link content
var temp_content = res.responseText;
}
感谢的
答案 0 :(得分:2)
使用.find()查找返回的字符串中<h1></h1>
和.text()的位置,以获取<h1></h1>
之间的任何内容。
请注意,如果此网页位于其他域中,则您需要处理跨站点脚本问题。如果它在同一个域上你应该没问题。
$.get(link, function(res){
//get link content
var temp_content = res.responseText;
$(temp_content).find("h1").text();
}
答案 1 :(得分:2)
$( temp_content ).find( 'h1' ).text()
应该这样做。您正在创建一个jQuery对象,找到H1,然后获取其文本。
答案 2 :(得分:1)
解决方案取决于HTML响应中返回标记的位置。例如,如果<h1>
元素在主体中,或者在没有环绕html和body标签的字符串中独立,那么find()
将不适合您。见这个例子:
var html_str = '<html><body><h1>Title</h1><h1>Second Title</h1></body></html>';
var html_str2 = '<h1>Title</h1><h1>Second Title</h1>';
$(html_str) --> jQuery( h1, h1 )
$(html_str2) --> jQuery( h1, h1 )
如果在这些jQuery对象上调用find,它将尝试从<h1>
元素的子元素中找到所需的元素。这当然行不通。您可以使用过滤器确保只获得所需的标记,或者直接调用text()
,例如
$(html_str).filter('h1').first().text() --> 'Title'
$(html_str2).first().text() --> 'Title'
如果<h1>
包含在div中,那么它可以正常工作。参见:
var html_str3 = '<div><h1>Title</h1><h1>Second Title</h1></div>';
$(html_str3).find('h1') --> jQuery( h1, h1 )
$(html_str3).find('h1').first().text() --> 'Title'
最后,请记得致电first()
,否则您将获得连接在一起的多个<h1>
元素的文字。
$(html_str3).find('h1').text() --> 'TitleSecond Title'