Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.02.2015, 21:16
Аспирант
Отправить личное сообщение для 2chan Посмотреть профиль Найти все сообщения от 2chan
 
Регистрация: 11.07.2014
Сообщений: 69

Получить уникальный селектор элемента
Можно-ли получить уникальный селектор элемента? В "Инспектор" есть такая возможность через контекстное меню, но можно-ли это сделать в коде?
Ответить с цитированием
  #2 (permalink)  
Старый 14.02.2015, 22:25
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

А что такое "уникальный селектор"? Понятно объясни, по какой схеме он формируется, приведи примеры.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 15.02.2015, 15:36
Аватар для Taipan
Новичок на форуме
Отправить личное сообщение для Taipan Посмотреть профиль Найти все сообщения от Taipan
 
Регистрация: 15.02.2015
Сообщений: 3

Больше конкретики.
Ответить с цитированием
  #4 (permalink)  
Старый 17.02.2015, 01:33
Аспирант
Отправить личное сообщение для 2chan Посмотреть профиль Найти все сообщения от 2chan
 
Регистрация: 11.07.2014
Сообщений: 69

Простите что так медленно. Только сейчас получилось зайти.

Taipan, danik.js,
Итак:
1) Если у элемента есть ID - возвращается "#elementID";
2) Если у элемента есть класс, который больше не используется на странице - возвращается класс ".class";
3) Если сочетание элементов больше не встречается, то оно и возвращается. Т.е. если "parenttag.class" больше нет на странице, то оно и будет возвращено.
4) Если ID нет у самого, но оно есть у родителя, то возвращается "#parentID > tag:nth-child(N)", где N - число дочернего элемента TAG в родителе с ID #parentID;
5) Если ID нет у родителя, то переходим к родителю родителя и т.д.;
6) Если в цепочке родителей нет ID или других уникальных селекторов (п.2), то доходит тега BODY отчисление идёт от него.

Т.е. будет примерно "body > tag1:nth-child(N) > tag2:nth-child(I) > tag3:nth-child(X) > neededtag:nth-child(5)", когда мы ищем neededtag, когда он ребёнок под номером 5 в tag3, который дочерний элемент под номером X в tag2, который дочерний элемент под номером I в tag1, который является N-ым дочерним элементом в BODY.

Пример. Мы хотим получить уникальный селектор элемента списка, в котором написано "this" в данном документе:
<body>
<ul>
<li>1</li>
<li>2</li>
</ul>
<ul>
<li>3</li>
<li>this</li>
<li>5</li>
</ul>
</body>

. После вызова функции из Инспектора мы получим "body > ul:nth-child(2) > li:nth-child(2)".
Если мы изменим документ так:
<body>
<ul>
<li>1</li>
<li>2</li>
</ul>
<ul>
<li>3</li>
<li id="elid">this</li>
<li>5</li>
</ul>
</body>

, то просто получим строку "#elid".

Я пробовал сам написать функцию, но, как мне кажется, должна быть встроенная, которая 100% будет быстрее самописной. Да и как получить номер дочернего элемента я не придумал…

Последний раз редактировалось 2chan, 17.02.2015 в 01:38.
Ответить с цитированием
  #5 (permalink)  
Старый 17.02.2015, 08:44
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,225

Сообщение от 2chan
Пример. Мы хотим получить уникальный селектор элемента списка, в котором написано "this" в данном документе:
Тут кагбэ нужно понять, что появилось раньше, курица или яйцо.

Ты пытаешся решить задачку в которой, тыкнув на некоем элементе, получить некий максимально "короткий" селектор, однозначно его определяющий...
Только зачем это?
Ответить с цитированием
  #6 (permalink)  
Старый 17.02.2015, 14:33
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от 2chan
должна быть встроенная
Нету такой. Тем более алгоритм чуть ли не "от балды". Не будут такие непонятные алгоритмы добавлять в спецификацию и реализации.

Алгоритм ты уже написал, дело за малым - написать код ).
Или поищи в исходниках DeveloperTools.
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
получить id элемента Петр Григорич Events/DOM/Window 12 02.10.2014 14:11
Помогу получить индекс элемента массива visman Javascript под браузер 7 03.05.2014 03:23
как получить offsetHeight для элемента с display:none cyber Events/DOM/Window 4 01.06.2012 19:19
Как получить ID брошенного элемента методом drop? evgenyan jQuery 6 11.10.2010 14:22
Получить id элемента, вызвавшего событие. Mutagena jQuery 2 19.03.2010 10:16