0

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

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

下面是一个简化的例子:

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

我想使用 jQuery 将其编辑为:

   ..
  .. more output
</div>

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

4

2 回答 2

0

这个问题可以简化为:

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

这可以递归完成,您可以简化初始容器的子容器的问题,直到您从 DOM 中删除了要删除的所有元素。.contents()返回一个包含所有节点(包括 TextNodes)的对象。.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 );
于 2013-11-10T13:14:29.160 回答
0

弄清楚了。我已经使用了几个$(selector).each()'s 来处理 DOM 并删除所有不需要的输出。

于 2013-11-09T16:06:28.770 回答