jQuery: 删除闭合标签

3
有没有一种使用jQuery删除单个闭合HTML标签的方法?
例如:
  <div class="one">
    <div class="two">CONTENT</div>
  </div>
</div>

我需要删除最后一个逗号,也就是在关闭div.one标签后的闭合div标签。

不幸的是,由于我正在处理的项目系统无法删除它,因此我必须使用JS / jQuery来完成此操作。


也许你可以尝试使用一些正则表达式,像这里 http://stackoverflow.com/questions/9063333/how-to-remove-the-end-tag-from-a-html-string-using-js,来使它工作。 - m3div0
1
现代浏览器会尝试纠正这些类型的无效标记。话虽如此,这根本不是jQuery的工作。无效的HTML应该在它到达客户端浏览器之前就处理好。这个HTML是在某个文件中吗? - Lix
@albuvee 一旦浏览器解析了HTML,重新排列DOM以满足您的需求将非常困难 - 那么为什么首先会发出不正确的HTML呢? - Explosion Pills
@ExplosionPills:假设是“一个复杂的HTML结构与相对有限的模板系统的组合”。 - albuvee
@ExplosionPills:谢谢。我一开始应该考虑“为什么不正确”的问题。现在我已经用 PHP 解决了它。 - albuvee
显示剩余2条评论
2个回答

5

不,这是不可能的。页面中根本没有闭合标签。

在HTML代码被解析之前,闭合标签存在于HTML代码中。一旦解析完成,每个元素都是一个对象,而不是标记中的起点和终点。

浏览器会尝试修复无效的标记,但问题在于不同的浏览器会采取不同的措施。有些浏览器可能会忽略额外的闭合标签,而其他浏览器则可能会暗示一个起始标记,使其成为一个完整的元素。您可以尝试重新排列元素,以使它们恢复到没有额外闭合标记的状态,但要做到这一点,您需要知道所有不同的浏览器在解析代码时会做什么。

更糟糕的是,如果该代码位于另一个div中,那么该标记就会结束,无效代码会出现在其后面。如何处理取决于您所展示的代码之外的代码以及不同的浏览器可能以不同的方式处理无效的代码。


谢谢。我应该一开始就考虑“为什么不正确”。现在我已经用 PHP 解决了它。 - albuvee

0

克隆方法:

$tmp = $('.one').clone( true );
$('#wrapper').empty().append($tmp)

您不能使用prepend方法添加起始标签。您尝试添加的HTML代码无效。浏览器可能会允许它,但这将添加一个元素,而不是起始标签。 - Guffa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接