удалить узел в дереве не поддерживает его уровень - PullRequest
0 голосов
/ 29 декабря 2010

в моем дереве, которое я создаю с помощью jquery, если я удаляю родительский узел, я хочу, чтобы его непосредственные дочерние элементы стали родительскими.

Но если у непосредственных дочерних элементов есть братья и сестры на том же уровнечем все братья и сестры должны стать корневым узлом. Я думаю, это будет более понятно с моим примером.

  • a
    • b
      • c
    • d
    • e

считаю это моим деревом, что я хочу, если я удалю a чем b, d, e долженстать отдельным корневым узлом, и c должен подпадать под b.

Я вставляю свой код, он достигает цели корневого узла, но делает c таким же уровнем b.

       var liFirst = $(spnElement).parents('li:first');
        $(childPrsnt).insertBefore(liFirst);

        $(spnElement).parents('li:first').remove();
        $(childPrsnt).find('li').unwrap('ul:first');

1 Ответ

1 голос
/ 29 декабря 2010

Вам нужны только непосредственные дети (не все потомки), поэтому вместо .find() используйте здесь .children(), например:

var liFirst = $(spnElement).parents('li:first');
$(childPrsnt).insertBefore(liFirst);

$(spnElement).closest('li').remove();
$(childPrsnt).children('li').unwrap();

Также обратите внимание на использование .closest() вместо .parent() с :first, это просто более дешевый / короткий способполучить тот же элемент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...