【发布时间】:2017-09-06 14:32:23
【问题描述】:
我在内容管理系统的限制下工作,有时会迫使我做一些奇怪的事情,因为我无法完全控制 HTML 代码。
在这种情况下,我希望一个 DIV 不嵌套在另一个 DIV 中。由于 CMS 设置,我不能只在 HTML 代码中重新排序 DIV。
所以,我有这个:
<div class="blog">
<div class="free-me">
Hello world
</div>
</div>
我需要的是:
<div class="blog">
</div>
<div class="free-me">
Hello world
</div>
<div class="blog">
</div>
如果我可以访问 HTML,这就像复制和粘贴一些行一样简单。但是,由于我不能只更改 HTML,所以我想知道是否有任何方法可以使用 CSS 或 JavaScript 来关闭 blog DIV,以便 free-me 可以成为兄弟。
我试过这个(尽管我知道它行不通):
.free-me::before {
content: '</div>';
}
正如怀疑的那样,那只是将</div> 的文本渲染到页面中。
对于 JavaScript,我当然不是专家,但您似乎只能使用 document.createElement('div'); 之类的命令插入带有开始和结束标签的完整元素我看不到采用现有 DIV 的明确方法并关闭它。
有没有办法,无论是使用 CSS 还是 JavaScript,我都可以强制 DIV 关闭或插入结尾 </div> 标记?
注意:最好是非 jQuery 解决方案。
【问题讨论】:
-
当任何 JS 运行时,浏览器已经做出了让你的标记有效的最佳猜测。我很好奇为什么你需要生成完全无效的html标记(5个打开
<div>标签,只有1个关闭)。也许这更像是一个 A-B 问题。 -
请重新检查您的问题,我猜这不是您想要的输出。
-
all 父
divs 是否具有相同的类名(在您的示例中为.blog)? all 孩子divs 是否具有类名(在您的示例中为.free-me)?父母可以包含多个具有该类名的孩子吗?最后,ES6 适合你吗? -
如何在编辑器中使用
</div>开始编写代码,以便在内容之外编写并创建自己的代码,然后使用'` 完成?free-me是您创建的元素还是由 CMS 生成的,您只能在里面写?@Winter,感谢您的提问。请注意,我不只是让free-me成为blog的兄弟姐妹,free-me拼接blog以便从本质上讲,博客在free-me完成后再次启动。不过,如果我有能力让free-me成为兄弟姐妹,我可能可以从那里开始。
标签: javascript html css