【问题标题】:BODY tag disappear when using Jquery.Load()使用 Jquery.Load() 时 BODY 标记消失
【发布时间】:2009-11-26 14:02:31
【问题描述】:

我正在尝试使用 jquery 及其模态框制作一个类似窗口的弹出窗口。首先我从一个 html 文件加载内容:

$("#test").load("test.htm");

然后我加载弹出窗口:

$("#test").dialog("open");

这就像它应该的那样工作,test.html 的内容被注入到模式弹出窗口中。只有一个认为是错误的,那就是 BODY 标签从弹出窗口的源头消失了。我需要 BODY 标签,因为我根据 BODY 标签做了一些格式化。

有谁知道为什么 jQuery.Load() 会删除 BODY 标签?有什么解决方法吗?

【问题讨论】:

  • "我根据 BODY 标签进行了一些格式化".. 为什么不使用包装器 div 并改为格式化呢?省去尝试将 标记插入现有 元素的麻烦,这绝对不是有效的 HTML。
  • 我想这样做,但我从外部 XML 源获取文件并且无法控制标记。

标签: javascript jquery html


【解决方案1】:

一个页面只能有一个body标签。如果页面上已有一个,则第二个将被忽略。

在您的情况下,听起来浏览器忽略了重复的正文(没有特定于 jquery)。不要使用正文进行样式设置,而是使用包含 <div> 的 id 或将保留的类。

【讨论】:

    【解决方案2】:

    它可能会删除body 标签,因为这是不允许的!每个文档只能有一个正文。与其强迫每个人重做所有 HTML 页面,jQuery 可能只是抓取body 的内容以在您调用load() 时使用。

    您是否考虑过将所有内容包装在一个包含元素中?例如:<div class="body"> 然后您可以将完全相同的样式应用于该元素。

    /* change this: */
    body { color: #f0f; etc }
    
    /* to this: */
    body, div.body { color: #f0f; }
    

    【讨论】:

    • +1,完美的例子,在所有可能的解决方案中需要最少的工作。
    • 这是一个很好的答案。也许可以通过使用对话框的类(从内存中,它的 ui-dialog)来改进它,尽管这取决于他是否出于任何其他原因使用对话框。我感觉他不是。
    【解决方案3】:

    您正在将 HTML 加载到已经有 body 标签的现有文档中。一个文档只能有一个,因此它会自动过滤任何内容,并在使用 load 时仅提取 body 标记内的 HTML。您应该将 HTML 包装在具有特定类的 div 中,并根据该类进行格式化。

    来自load 文档(重点是我的):

    在 jQuery 1.2 中,您现在可以指定一个 URL 中的 jQuery 选择器。这样做 将过滤传入的 HTML 文档,只注入元素 匹配选择器。语法 看起来像“url #some > 选择器”。默认选择器“body>*” 始终适用。 如果 URL 包含 空间它应该是escape()d。见 更多信息的示例。

    【讨论】:

      【解决方案4】:

      您可以使用 js 的 document.write 来动态创建 body 标签。

      【讨论】:

      • 这将是动态的,这意味着我将从 XML 文件中获取 HTML 代码并使用 ASP.NET 处理程序(ashx 文件)将其加载到 DIV 中。所以我不能真正使用javascript添加body标签,因为我不知道要在哪一行添加它,因为我要加载的文档可能会改变。
      【解决方案5】:

      我遇到了同样的问题,并或多或少地解决了以下问题: 除了使用 load(),你可以使用 get(),并做一些智能字符串替换:

      var content = get("test.htm")
                     .replace("<body>", "<body><div class='body'>")
                     .replace("</body>", "</body>");
      $("#test").replace($(content).filter(".body"));
      

      【讨论】:

        猜你喜欢
        • 2012-04-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-18
        • 1970-01-01
        • 1970-01-01
        • 2011-02-18
        • 2015-03-11
        相关资源
        最近更新 更多