@Erling

Как в jQuery обратится к другому элементу родителя?

Структура html следующая:
<ul>
  <li>
    <a class="link" href="#">...</a>
    <div class="text">Show this on .link hover</div>
  </li>
  <li>
    <a class="link" href="#">...</a>
    <div class="text">Show this on .link hover</div>
  </li>
  ...
</ul>


jQuery:
$(".link").on("mouseover mouseout", function(){
    $(".text").toggle();
  });


Т.е. при наведении мыши на .link надо показать .text для родителя ссылки, на которую навели (т.е. внутри LI). Сейчас у меня ивент срабатывает на все LI (естественно).
  • Вопрос задан
  • 1039 просмотров
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Самый надёжный вариант:
$(this).closest('li').find(".text").toggle();
Он не сломается, когда поменяется структура html (в разумных пределах).

Есть ещё варианты, которые полагаются на взаимное расположение элементов:
$(this).parent().find(".text").toggle();
или
$(this).next(".text").toggle();

Эту же задачу можно решить и на css:
.link:hover + .text {
  display: block;
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Bowen
@Bowen
Японский бог
$(this).next(".text")
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы