Кратчайший путь DOM элемента (для использования в JavaScript / jQuery / Dojo) - PullRequest
0 голосов
/ 24 мая 2011

Я хочу получить путь DOM случайного элемента на веб-сайте (например, Firebug или этот Greasemonkey userscript ), когда я нажимаю на этот элемент.Нет проблем для этой части, я возвращаю строку, содержащую путь.

Единственным недостатком является то, что мне не нужен полный путь, такой как

html > body > div #mainPanel > table #pageBody > tbody > tr > td 

Только это: #pageBody > tbody > tr > td будетДостаточно, чтобы получить элемент с помощью jQuery или Dojo.

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

Что касается класса, яЯ не уверен, что могу сделать то же самое, потому что было бы полезно проверить, соответствуют ли другие элементы шаблону.Например, на моем сайте .DiscreetList > li соответствует 6 узлам.Как я могу получить хороший?

Есть ли другие возможности сокращения, кроме трюка класса и идентификатора?(для использования в jQuery / Dojo или аналогичном)

Редактировать: После замечаний я нашел этот фрагмент (© код Грега )

Теперь проблема с индексомисправил, и я решил, основываясь на комментариях, сократить по id, безопасный путь:)

Спасибо за ваши ответы.

Ответы [ 2 ]

1 голос
/ 24 мая 2011

Для точного определения местоположения элемента вам также необходимо сохранить индекс элемента (в пределах его родительского элемента).В противном случае, как отметил Пойнти, даже #pageBody > tbody > tr > td будет соответствовать всем td внутри tr.

1 голос
/ 24 мая 2011

Единственными элементами, которые вы можете гарантировать уникальность, являются элементы с идентификатором, и вы можете также рассуждать о некоторых других элементах (не может быть вложенных тегов формы, есть только одна голова, тег trвсегда есть тег внешней таблицы, ...) но это несколько запутанно.Я бы придерживался идентификаторов.

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