Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как узнать родительский элемент? (https://javascript.ru/forum/events/43458-kak-uznat-roditelskijj-ehlement.html)

alex_han 06.12.2013 11:58

Как узнать родительский элемент?
 
Всем доброго времени суток!

Вопрос от новичка в JS:

Есть горизонтальное меню с выпадающим подменю организаваное через ul-li. Стандартным CSS получается иметь всегда выделенный только один элемент под курсором при помощи hover. Я хочу оставлять выделенным пункт меню при переходе на подменю. Для этого мне нужно пункту меню поменять свойство. Статически это решено так:
<ul class="menu" id="main-menu">
<li name="about"><a href="#">Телефоны</a>
<ul>
<li onmouseover="mv(1)" onmouseout="mv(2)"><a href="/">Nokia</a></li>
...
function mv(i)
{if (document.)
switch (i)
{
case 1:
pr=document.getElementsByName('about')[0];
pr.style.backgroundColor='#ffffff';
brake;
case 2:
pr=document.getElementsByName('about')[0];
pr.style.backgroundColor='transparent';
}
}

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

Хотелось бы иметь код, привязанный только к такой структуре

<ul class="menu" id="main-menu">
<li>
<ul>
<li></li>
<li></li>
</ul>
</li>
</ul>
--------------------------------------------------------------------
Best regards.
Alex

ksa 06.12.2013 13:26

Цитата:

Сообщение от alex_han
Но как можно это сделать гибче

В инете валом примеров для "многоуровнего меню"... Тебе нужно просто посмотреть те примеры...

alex_han 06.12.2013 16:23

Ksa, спасибо, но в таком случае всех в форуме можно направлять почитать доку или порыться в инете, купить умную книгу...

Хорошо, я тогда конкретизирую вопрос:
Есть родительский объект с классом "MyClass" и ID="MyID" (первый уровень) на странице с вложенными объектами на 3 уровня.
1. Можно ли перехватить наведение/выход мыши на объект третьего уровня, не прописывая на этом уровне обработчик событий onmouseover/onmouseout
2. Как определить родителя 2 уровня , при наведении/выход мыши на.с объект третьего уровня... Желательно чтобы функция отрабатывала только для дочерних объектов "MyID".

ksa 06.12.2013 16:37

Цитата:

Сообщение от alex_han
в таком случае всех в форуме можно направлять почитать доку или порыться в инете, купить умную книгу

Не стоит себя сразу равнять "со всеми"... :D Начинай учиться отвечать только за себя. ;)

Цитата:

Сообщение от alex_han
Хорошо, я тогда конкретизирую вопрос

Я настаиваю на том, что ты роешь подземный ход на чердак. Посмотри нормальные примеры и сделай правильные выводы...

alex_han 06.12.2013 17:55

Ksa, я нашел те функции JS которые мне были нужны...но только в доке по JS, а не в примерах, выложеных в инет.

но, прошу учесть:
1. Я не буду искать и копировать код, который я не знаю, что он эффективен а на разбор чужого написанного кода, уйдет во много раз больше времени, чем получить интересующий ответ у ЗНАЮЩИХ людей.
2 создавая код под себя, я решаю вопрос с пониманием кода и если необходимо, то быстрого нахождения и фикса слабых мест, если такие обнаружатся...а также написание тест кейсов, доки и правильных коментов
3 Если бы один создавал, а другие только пользовались, то писали бы девелоперы на одном языке программирования... и ждали выхода патча для устранение багов....

4. ну и последнее... Форумы создаются для того, чтобы оперативно спросить людей знающих быстрой помощи, а не для того чтобы выслушивать бесполезные поучающие советы ...

Всего наилучшего.
-----------------
Alex

ksa 06.12.2013 22:28

Ты специалист - тебе видней... :D

Batyabest 06.12.2013 23:01

Цитата:

Сообщение от alex_han (Сообщение 285018)
Форумы создаются для того, чтобы оперативно спросить людей знающих быстрой помощи, а не для того чтобы выслушивать бесполезные поучающие советы ...

Вот с этим тут у многих проблемы... Очень уж поучить любят...


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