【问题标题】:jQuery: Remove a closing tagjQuery:删除结束标签
【发布时间】:2013-03-13 07:36:29
【问题描述】:

有没有办法使用 jQuery 删除单个关闭 HTML-Tag?

例子:

  <div class="one">
    <div class="two">CONTENT</div>
  </div>
</div>

我必须删除最后一个,这意味着 div.one 关闭后的关闭 div-tag。

不幸的是,我必须使用 JS/jQuery 来执行此操作,因为我在此项目上使用的系统无法删除它。

【问题讨论】:

  • 这是一个字符串还是页面上的内容?如果是内容,则浏览器已经解析了 HTML 并创建了有效的 DOM 结构。不再有孤独的结束标签。
  • 也许您可以尝试使用一些正则表达式使其正常工作,例如stackoverflow.com/questions/9063333/…
  • @FelixKling:这是页面上的内容。因此,它周围有更多的结构/dom,因此这
    关闭了其他 div,整个结构/dom 分崩离析……
  • 现代浏览器会尝试纠正这些类型的无效标记。也就是说,这根本不是 jQuery 的工作。无效的 HTML 应该在到达客户端浏览器之前得到处理。这个 HTML 是否位于某个文件中?
  • @albuvee 一旦浏览器解析了 HTML,就很难将 DOM 重新排列成您需要的样子——为什么首先会发出不正确的 HTML?
  • 标签: javascript jquery html


    【解决方案1】:

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

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

    浏览器会尝试修复无效标记,但问题是不同的浏览器会做不同的事情。一些浏览器可能会忽略额外的结束标签,而另一些浏览器可能会暗示一个开始标签以使其成为一个完整的元素。您可以尝试重新排列元素以使它们恢复到没有额外结束标记时的状态,但要做到这一点,您需要知道所有不同的浏览器在解析代码时会执行什么操作。

    更糟糕的是,如果该代码在另一个 div 中,那么该标签将在那里结束,而无效代码将在此之后出现。如何处理取决于您显示的代码之外的代码,并且不同的浏览器可能以不同的方式处理无效代码。

    【讨论】:

    • 谢谢。我应该首先考虑“为什么它不正确”。我现在用 php 解决了这个问题。
    【解决方案2】:

    克隆方法:

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

    【讨论】:

    • 您不能使用prepend 方法添加起始标签。您尝试添加的 HTML 代码无效。浏览器可能会允许它,但它会添加一个元素,而不是起始标签。
    猜你喜欢
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    相关资源
    最近更新 更多