Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Поиск родительского ID по известному дочернему (https://javascript.ru/forum/events/14725-poisk-roditelskogo-id-po-izvestnomu-dochernemu.html)

Romanroman 28.01.2011 08:28

Поиск родительского ID по известному дочернему
 
Имеем разметку вида:
<p class="level1" id="1p"><li class="menuli" ><a class="lev1 loadcontent" id="2" href="materials/1.0.html">Общие сведения</a></li>

<ul class="secondli">
<li class="menuli"><a class="lev2 loadcontent" id="3"  href="materials/1.1.html">Назначение</a></li>
<li class="menuli"><a class="lev2 loadcontent" id="4" href="materials/1.2.html">Основные технические характеристики</a></li>
</ul>

</p>


<p class="level1" id="2p"><li class="menuli"><a class="lev1 loadcontent" id="5" href="materials/3.0.html">Общее устройство</a></li>

<ul class="secondli">
<li class="menuli"><a class="lev2 loadcontent" id="6" href="materials/3.0.html">Состав</a></li>
<li class="menuli"><a class="lev2 loadcontent" id="7" href="materials/3.0.1.html">Принцип</a></li>
<li class="menuli"><a class="lev2 loadcontent" id="8" href="materials/3.0.2.html">Работа</a></li>
</ul>

</p>


Зная id тега <a> (1...8 - обнаружение происходит по событию) нужно найти id родительского P (в данном случае 1p и 2p соответственно, в зависимости от принадлежности потомка родителю).

Почему-то, не понимаю пока почему, простая переборка по parent не отрабатывает должным образом.
Например, находясь в <a > с id=3,
alert($('#3').parent().parent().parent().attr('id'));

выдает пустое окно... Вчера пол дня бился над этим... ноль эмоций к сожалению.. Буду рад любой помощи хотя бы в направлении движения мысли

Gvozd 28.01.2011 08:48

изучите сначала основы HTML!!!
как вы додумались пихать в <P> блочные элементы
особенно шедеврально смотрится <LI> без обертки

как только сделаете правильную разметку, все у вас должно заработать

Amphiluke 28.01.2011 08:49

Цифровые id-шники — не очень хороший тон.

А по теме:
alert($("#3").closest("p").attr("id"));

ksa 28.01.2011 09:41

Цитата:

Сообщение от Amphiluke
Цифровые id-шники — не очень хороший тон.

По последним данным ВЦСПС это вполне допустимо, на форуме про то даже тема есь - там описано чего и почему... ;)

Amphiluke 28.01.2011 10:00

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru">
<head>
<title>Template</title>
<style type="text/css">
    #1 { color: red; }
</style>
</head>
<body>
    <p id="1">test</p>
</body>
</html>


В принципе, для меня этого достаточно, чтобы избегать таких id

Kolyaj 28.01.2011 13:31

Цитата:

Сообщение от Amphiluke
В принципе, для меня этого достаточно, чтобы избегать таких id

А для меня это аргумент, чтобы их использовать. Ибо не надо городить id для CSS, для CSS классов достаточно. id нужны для JS.

ksa 28.01.2011 13:39

Цитата:

Сообщение от Kolyaj
для CSS классов достаточно

Ну это тоже перебор... :)

Как написано в уставе караульной службы
При нападении на пост часовой обязан "умело действуя штыком и прикладом" отражать нападение, до прихода поткрепления...
Так и тут.
- Селектор идентификатора показывает уникальность
- Селектор класса показывает некую группировку либо неоднозначность отображения (типа on|off)

ksa 28.01.2011 13:40

Цитата:

Сообщение от Kolyaj
id нужны для JS

Я бы сказал что ИД нужны там где ни действительно нужны... :D

Kolyaj 28.01.2011 13:50

Цитата:

Сообщение от ksa
- Селектор идентификатора показывает уникальность
- Селектор класса показывает некую группировку либо неоднозначность отображения (типа on|off)

Ничего он не показывает. Он только неоправданно увеличивает вес селектора. Переопределить стили после таких селекторов без указания #id практически невозможно. Остаётся только проклинать таких верстальщиков, если после них проект достанется.

Мне попадались варианты от особо одарённых с каскадами из нескольких id-шников.

ksa,
небольшой вопрос: вы создаёте сайты на заказ, т.е. сделал и забыл, возможно что-то допилил потом, или последовательно развиваете один или несколько больших проектов, которые постоянно меняются и их постоянно надо дописывать?

ksa 28.01.2011 13:53

Цитата:

Сообщение от Kolyaj
Мне попадались варианты от особо одарённых с каскадами из нескольких id-шников.

Могу только посочувствовать твоему плачевному опыту... :D Но не более того.

Цитата:

Сообщение от Kolyaj
небольшой вопрос

Скорее первое, нежели второе...


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