使用JQuery替换HTML标记

时间:2010-11-15 13:44:32

标签: jquery html ajax string

好的,所以在调用AJAX Get请求后,调用'success'并传递字符串'data',其中包含所请求站点的html。现在,我想提取当前站点的<body>标记中的所有内容,并将其替换为存储在数据字符串中的<body>标记中的所有内容。这是怎么做到的?

我尝试var b = $(data).find('body');然后.replaceWith(b),但b显然是一个对象。

感谢您的帮助!

编辑; Ajax的:

$.ajax({
        type: "GET",
        url: "managefiles.php",
        dataType: "html",
        success: function(data){
          ...
        }
     });

4 个答案:

答案 0 :(得分:4)

您需要做的就是替换html()代码的body

$("body").html($(data).find("body"));

http://api.jquery.com/html/

答案 1 :(得分:2)

将其附加到body

$("body").empty(); // clear
b.appendTo("body"); // append new

答案 2 :(得分:2)

$( '主体')的html(数据);

答案 3 :(得分:2)

这可能有点棘手,因为在将整个HTML文档传递到jQuery对象的情况下,浏览器的行为会有所不同。

根据您使用的浏览器,某些标记(在某些情况下包括<body>)将被删除。

虽然您可以将整个HTML文档添加到当前<body>并希望浏览器做正确的事情,但最好让您的服务器仅返回您实际需要的内容。


编辑:如果您无法修改来自源代码的HTML,您可以尝试这样做,以使其更安全一点:

var $data = $(data);
var $contents;

if( $data.filter('body').length ) {
  $contents = $data.filter('body').contents();
} else if( $data.find('body').length ) {
  $contents = $data.find('body').contents();
} else {
  $contents = $data;
}

$(document.body).empty().append( $contents );