我从$.ajax
获取了一些html数据,需要将它们插入<div></div>
在某些情况下,返回html
,需要包含另一个div
,所以答案如下:
info here</div><div>info there
而不是关闭第一个div,它创建了这个:
<div>info here<div>info there</div></div>
我该如何防止这种情况?
答案 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将代码粘贴在错误的元素中。