Jquery html()改变了我的代码......?

时间:2014-06-23 12:14:55

标签: jquery html ajax dom dynamic-content

我从$.ajax获取了一些html数据,需要将它们插入<div></div> 在某些情况下,返回html,需要包含另一个div,所以答案如下:

info here</div><div>info there

而不是关闭第一个div,它创建了这个:

<div>info here<div>info there</div></div>

我该如何防止这种情况?

3 个答案:

答案 0 :(得分:4)

这不是有效的HTML:

info here</div><div>info there

我怀疑这是jQuery这样做的。更有可能的是,浏览器试图理解无效标记,尽可能地纠正它。它会在遇到无效标记时执行此操作,无论是通过AJAX还是从初始页面加载。

您可以使用有效的HTML来防止这种情况发生。

编辑:请注意,在浏览器中,页面的HTML不是原始字符串(就像它来自服务器端代码)。它是文档元素的分层模型。因此,您可能在服务器端构建HTML的字符串操作类型不同于客户端。您不希望通过在它们之间注入字符串来分解元素。而是替换父元素的内容。因此,在您现有的div中,您可以插入:

$('#parentDiv').html('<div>info here</div><div>info there</div>');

或者您可以使用该标记替换整个父div

$('#parentDiv').replaceWith('<div>info here</div><div>info there</div>');

答案 1 :(得分:3)

你可以做类似的事情

$("#mydiv")[0].outerHtml = "<div id='mydiv'>" + data + "</div>";

或者:

$("#mydiv").replaceWith("<div id='mydiv'>" + data + "</div>");

答案 2 :(得分:1)

发布您的jquery代码,但是让我猜您正在直接访问$(&#34; div&#34;),它会选择文档中的所有div参数。

将id或类放在要更改的div上,如下所示:

<div id="dynamic_content"></div>

-

$("#dynamic_content").html("my new dynamic content from ajax request");

然而,另一种可能性,正如前面提到的那样,你的html格式错误,jquery将代码粘贴在错误的元素中。