从DOM移除某个地方的HTML输出到某个地方

时间:2013-11-09 15:39:51

标签: jquery dom-manipulation

由于无法修改源,我陷入困境。我能够插入一些自己的HTML,所以我可以创建一个起点。我也有一定的元素来定义为终点。

我想知道是否有可能以PHP提供的strpos方式删除输出的HTML,但现在使用jQuery。我在论坛上搜索过它,但我没有找到相关的问题。

以下简化示例:

<my startpoint>
<div>
  ..
  .. non editable output
  ..
  <identifier>
  ..
  .. more output
</div>

我想使用jQuery将其编辑为:

   ..
  .. more output
</div>

非常感谢任何建议。谢谢你的时间。

2 个答案:

答案 0 :(得分:0)

想出来。我使用了几个$(selector).each()来处理DOM并删除所有不需要的输出。

答案 1 :(得分:0)

此问题可以简化为:

  • 你有一个容器
  • 您在该容器中有一个元素,其中:
    • 应删除该元素之前的所有内容
    • 应该(部分)删除包含该元素的元素
    • 拆分元素本身应该删除

这可以在您使用初始容器的子容器简化问题时递归完成,直到您从DOM中删除了要删除的所有元素。 .contents()返回包含所有节点(包括TextNodes)的Object。 .each()循环遍历此类对象中的所有元素。在那里返回false会提前停止此循环。当第二个参数中的元素位于第一个参数的元素中时,$.contains(...)为真。

var start = document.getElementById('start');
var splitpoint = document.getElementById('splitpoint');

function removeUntil( parent, split ) {
    $(parent).contents().each( function( index, elem ) {
        if( elem == split ) {
            parent.removeChild( elem );
            return false;
        } else if( $.contains( elem, split ) ) {
            removeUntil( elem, split );
            return false;
        } else {
            parent.removeChild( elem );
        }
    } );
}

removeUntil( start, splitpoint );