【问题标题】:Trying to select a 'body' tag from html that is returned by get() request尝试从 get() 请求返回的 html 中选择“body”标签
【发布时间】:2011-12-11 23:57:22
【问题描述】:

我正在制作一个ajax get call,它会返回 html 页面的内容。我正在尝试选择 body 标记的内容,但我的选择器返回一个空的 jquery 对象。

$.get(filename, function(data) {
    console.log($("body", data));
})

data 是 html 文件的内容。

【问题讨论】:

标签: jquery jquery-selectors


【解决方案1】:

jQuery 无法选择响应字符串的body,因为使用$() 转换字符串时,<body> 标签会消失。

因此,您必须以另一种方式从data 字符串中选择正文,例如正则表达式。示例:

$.get(filename, function(data) {
    var body = data.replace(/^[\S\s]*<body[^>]*?>/i, "")
                    .replace(/<\/body[\S\s]*$/i, "");
    //Optionally, convert the string to a jQuery object:
    body = $(body);
    console.log(body);
}))

注意:我的正则表达式假定一个格式良好的 HTML 文档,其中 &gt; 使用 HTML 实体正确显示。如果不是这种情况,则必须使用更高级的 RegExps,例如 this question 中显示的那些。

【讨论】:

  • 想知道是否更容易将内容加载到 xml 文档中并使用选择器来获取 body 标签。 api.jquery.com/jQuery.parseXML
  • @dev.e.loper 当然,当返回的 HTML 是一个格式良好的 HTML 文档
  • 让其他人知道,在我附加这个主体(使用 jQuery 附加)之后,我必须等待一点(通过 setTimeOut 函数)才能对刚刚附加的元素执行任何选择操作。
【解决方案2】:

jQuery 使用文档对象模型,而不是构成该模型的“文本”。数据元素中只有一大段文本尚未添加到文档中。

$(body).html(data);

...假设数据包含有效的正文代码。它是一个完整的 HTML 页面,然后您需要将其解析为仅正文内容,例如使用 indexOf 或类似的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-15
    • 2018-07-14
    • 1970-01-01
    • 2020-07-18
    • 1970-01-01
    相关资源
    最近更新 更多