Удалить вывод HTML из DOM из определенного места в определенное место

0

Из-за невозможности изменить источник я застрял в ситуации. Я могу вставить некоторый собственный HTML, поэтому я могу создать отправную точку. У меня также есть несколько определенный элемент для определения конечной точки.

Мне интересно, можно ли удалить вывод HTML в strpos, как это предлагает PHP, но теперь с помощью jQuery. Я искал его на форумах, но я не нашел соответствующих вопросов.

Ниже упрощенный пример:

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

Я хочу использовать jQuery для его редактирования:

   ..
  .. more output
</div>

Любые предложения приветствуются. Спасибо за ваше время.

Теги:
dom-manipulation

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 );
0

Догадаться. Я использовал несколько $(selector).each() для обработки DOM и удаления всего нежелательного вывода.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню