试图从get()请求返回的html中选择一个"body"标签

dev*_*per 4 jquery jquery-selectors

我正在进行ajax get调用,返回html页面的内容.我正在尝试选择body标记的内容,但我的选择器返回一个空的jquery对象.

$.get(filename, function(data) {
    console.log($("body", data));
})
Run Code Online (Sandbox Code Playgroud)

哪里data是html文件的内容.

Rob*_*b W 14

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);
}))
Run Code Online (Sandbox Code Playgroud)

注意:我的正则表达式假设一个格式良好的HTML文档,其中>使用HTML实体正确显示.如果不是这种情况,则必须使用更高级的RegExps,例如此问题中显示的那些.