【问题标题】:Jquery html() changes my code...?Jquery html() 更改了我的代码...?
【发布时间】:2014-08-13 11:29:31
【问题描述】:

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

info here</div><div>info there

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

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

我怎样才能防止这种情况发生?

【问题讨论】:

  • 什么是jquery代码?
  • info here&lt;/div&gt;&lt;div&gt;info there 是无效的 HTML
  • 请发布更多代码。
  • 我不知道你是如何得到那种数据作为响应的,但是把你的数据从响应中放入 div 标签。所以"&lt;div&gt;"+data+"&lt;/div&gt;" 将为您需要显示的文本创建一个开始和结束 div 标签。
  • 发布更多代码info here&lt;/div&gt;&lt;div&gt;info there is invalid HTML,并且您应该在DIV 中有正确的ID,您将在其中注入它。您能解释一下您要做什么

标签: jquery html ajax dom dynamic-content


【解决方案1】:

这不是有效的 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>');

【讨论】:

    【解决方案2】:

    你可以做类似的事情

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

    或者:

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

    【讨论】:

    • 你在这个问题上打败了我。我在评论中给出了同样的内容。;)
    • 我知道,事实上你的答案是在我发表评论之前发布的......所以你不能......
    【解决方案3】:

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

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

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

    -

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

    但是,正如海报之前所说,另一种可能性是您的 html 格式错误,而 jquery 将代码粘贴到错误的元素中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      相关资源
      最近更新 更多