使用jQuery检索html标记之间的字符串

时间:2011-03-15 12:54:28

标签: jquery ajax

我已经设法通过jQuery和ajax检索网页的html内容。 现在我想找到h1标签之间的值并显示它。 我怎么能在jQuery中做到这一点?

$.get(link, function(res){
    //get link content
    var temp_content = res.responseText;
}

感谢的

3 个答案:

答案 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'