Как построить дерево родителей элементоа на javascript/jQuery

интернет программирование php JavaScript jQuery

Суть такова:

Например мы кликаем на элемент и получаем его jQuery объект, далее нам нужно построить дерево родителей этого элемента например таким образом:

"body[0] > div[1] > div[0] > article[0]> section[0] > header[0] > p[3]"

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

Построить дерево не проблема, проблема узнать на каждом шаге номер индекса элемента среди его схожих смежных элементов.

У кого какие варианты? Решения можно прилагать как на jQuery, так и на чистом js или прилагайте ссылки где почитать о данной проблеме.

Вот мой вариант, но к сожалению он не работает правильно.


var parents_tree = function ( obj ) {

var obj_tag = obj[0].tagName.toLowerCase(),
path = [],
i = 0,
obj_class, index;

while ( obj_tag !== 'html' ) {

index = i === 0 ? ':eq(0)' : ':eq(' + obj.index(obj_tag) + ')';

obj_class = obj.attr('class') !== undefined ? ('.' + obj.attr('class') ).split(' ').join('.') : '';
path.unshift(obj_tag + index );
obj = obj.parent();

obj_tag = obj[0].tagName.toLowerCase();
i++

}

return path.join(' > ');
}
Ответы:


12 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.