我试图使用jquery及其模态框创建一个像窗口一样的弹出窗口。首先,我从html文件中加载内容:
$("#test").load("test.htm");
然后我加载弹出窗口:
$("#test").dialog("open");
这样就可以了,test.html的内容是注入模态弹出窗口的。只有一个认为是错误的,那就是BODY标签从弹出窗口的源头消失了。我需要BODY标签,因为我根据BODY标签进行了一些格式化。
有谁知道为什么jQuery.Load()会删除BODY标记?有没有解决方法?
答案 0 :(得分:1)
一个页面只能有一个body标签。如果页面上已有一个,则忽略第二个。
在你的情况下,听起来好像浏览器忽略了重复的主体(没有特定于jquery)。不要使用正文进行样式设置,而是使用包含<div>
的id {1}}来保留。
答案 1 :(得分:1)
它可能会删除body
标记,因为它不被允许!每个文档只能有一个正文。而不是强迫每个人重做所有HTML页面,jQuery可能只是抓住body
时要使用的load()
内容。
您是否考虑过将所有内容包装在包含元素中?例如:<div class="body">
然后,您可以将完全相同的样式应用于该元素。
/* change this: */
body { color: #f0f; etc }
/* to this: */
body, div.body { color: #f0f; }
答案 2 :(得分:0)
您可以使用js的document.write作为替代方法动态创建body标签。
答案 3 :(得分:0)
您正在将HTML加载到已有正文标记的现有文档中。文档只能有一个,因此它在使用加载时会自动过滤任何内容并仅提取body标记内的HTML。您应该将HTML包装在具有特定类的div中,并根据该类进行格式化。
来自load文档(强调我的):
在jQuery 1.2中,您现在可以指定一个 URL中的jQuery选择器。这样做 将过滤传入的HTML 文档,只注入元素 与选择器匹配。语法 看起来像“url #some&gt; 选择器“。默认选择器”body&gt; *“ 始终适用。如果网址包含 空间应该是逃避()d。见 更多信息的示例。
答案 4 :(得分:0)
我遇到了同样的问题,并且或多或少解决了以下问题: 而不是使用load(),你可以使用get(),并做一些智能字符串替换:
var content = get("test.htm")
.replace("<body>", "<body><div class='body'>")
.replace("</body>", "</body>");
$("#test").replace($(content).filter(".body"));