Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Перебор вложенных тегов. (https://javascript.ru/forum/jquery/10891-perebor-vlozhennykh-tegov.html)

werdes 27.07.2010 11:51

Перебор вложенных тегов.
 
Имеется примерная структура тегов и их содержания :
Нужные теги имеют одиннаковые классы, кроме классов никаких идентефикаторов нет
В каждом теге может быть произвольный текст,вложен такой же тег (с произвольным текстом),
либо другие теги (блоки с другими классами, переносы, параграфы)
Вложенность тегов "qwerty" может быть N количество раз

<div class="qwerty">
Lorem ipsum
    <div class="qwerty">
        <div class="qwerty">
        Lorem ipsum
        </div>
        <div class="qwerty">
        Lorem ipsum
        </div>
        <div class="qwerty">
        Lorem ipsum
        </div>
    Lorem ipsum
    </div>
</div>

<div class="qwerty">
    <div class="qwerty">
    Lorem ipsum
    </div>
</div>


Нужно считать каждый тег с его наполнением и привести к виду:

Код:

[qwerty]
Lorem ipsum
    [qwerty]
        [qwerty]
        Lorem ipsum
        [/qwerty]
        [qwerty]
        Lorem ipsum
        [/qwerty]
        [qwerty]
        Lorem ipsum
        [/qwerty]
    Lorem ipsum
    [/qwerty]
[/qwerty]

[qwerty]
    [qwerty]
    Lorem ipsum
    [/qwerty]
[/qwerty]

С тем же фреймворком jQuery оно вроде и легко на первый взгляд представляется, но
Нужно сохранить вложенность
Простой заменой этого не добъешься, тк помимо "qwerty" тегов, там между полно еще разных
Текст может находиться либо до вложенного тега, либо после, либо вообще отсутствовать

Как вариант: Найти тег с классом "qwerty" и перемещаться по дочерним элементам,
но если их количество вложенности относительно родителя разное,
то как узнать хотя бы количество вложенности тегов в текущем обрабатываемом?

Потом, если первый проход прошел, как предотвратить обработку дочерних элементов
относительно следующего найденного тега, если он вложен в ранее обработанный тег?

Если у кого есть идеи, как это все провернуть, объясните примерно,
не надо ложить готовый вариант, тк это больше ради интереса, хочется саму суть уловить,и самому добиться результата,
а не на готовое напасть. Буду очень благодарен помощи:)


Часовой пояс GMT +3, время: 20:16.