我正在尝试创建一个JS脚本来进行修改,以便动态地向HTML文档添加页脚。我的想法是在文档的末尾添加一个div元素来包含页脚,并提供一个浮动的固定页脚,我还需要将所有其他内容包装在div中,基本上我需要这样的东西:
<html>
<head>
<title>Foobar</title>
</head>
<body>
<div id="contentWrapper">
<!-- Content is here -->
</div>
<div id="footerWrapper">
<!-- Footer goes here -->
</div>
</body>
</html>
问题是,HTML是从最终用户对结构有一点控制权的系统(它是一个博客平台)生成的,并且不能保证某种结构因此我需要包装div中的内容以确保页脚正常工作。
我尝试过,并意识到不起作用是:
$(document.body).wrap($('<div/>').attr('id','footerWrapper'));
这个问题是由于HTML结构是由用户生成的,我被迫在<body>
- 标签内注入了JS文件的链接。所以现在当我调用wrap()时,似乎首先从$(document.body)中删除所有内容,然后将其附加到新div中。由于JS文件是从内部链接的,因此调用wrap()似乎会暂时删除它们,并且似乎浏览器卸载了脚本,一切都停止工作,我留下了空白页面。不完全是我想到的。
接下来的想法是首先将JS标签复制到head-element以保存它们,所以我将它们包装在div中(是的,丑陋的,我知道),并试图将它们复制到:
$(document.head).append($('#copyToHead').html());
那没有做任何事情,似乎$(document.head)不能用于.html()和.append()等函数。
所以,现在我没有想法了。有人有什么想法吗?
答案 0 :(得分:1)
$(document.head)不能用于.html()和.append()等函数。
那是因为document.head是undefined
使用$("head")[0]
答案 1 :(得分:1)
不清楚你想要添加到头部的内容。如果你只是想在这里添加一个div,这是一个解决方案:
$(document).ready(function(){
$(document.body).append($('<div></div>').attr('id','mydiv').html('This is footer'));
});
答案 2 :(得分:0)
如果留下事实,$(document.body)
不存在,将所有内容包装到div中然后通过attr
设置id可能会有问题(不要问我为什么 - 它只是发生)。所以我玩它并创建了这个小片段(预览,100%工作)。
由于你不能使用html,但可以“追加”script
我通过内联脚本进行了整个文档操作。
<script type="text/javascript">
$(document).ready(function(){
$("body")
.wrapInner('<div id="wrapper"/>')
.append('<div id="footer">footer text</div>');
});
</script>
答案 3 :(得分:0)
我相信这应该会让你更好:
$('body')
.children ().wrapAll ($('<div/>').attr('id','contentWrapper'))
.end ()
.append ($('<div/>').attr('id','footerWrapper'))
;
参考:wrapAll