Извините, я новичок в этом. У меня проблема с выбором элемента внутри моего навигационного списка
<ul class="subnav">
<li><a href="#">Link 1</a><span class="sub">Description 1</span></li>
<li><a href="#">Link 2</a><span class="sub">Description 2</span></li>
<li><a href="#">Link 3</a><span class="sub">Description 3</span></li>
</ul>
Я ищу, чтобы создать функцию, которая, когда пользователь наводится на ссылку 1, должен отображаться только текст описания 1.
Ниже мой JQUERY
$('ul.subnav li a').hover(function() {
$('.sub').animate({opacity: "show", top: "5"}, "slow");
}, function() {
$('.sub').animate({opacity: "hide", top: "-5"}, "slow");
});
Проблема, с которой я сталкиваюсь, - это когда пользователь наводится на любую ссылку, появится весь текст описания. Как я могу показать JQUERY, чтобы показать только описание, где мышь зависает?
Большое спасибо.
Вы можете использовать $(this)
чтобы получить ссылку только на якорь, который в настоящее время .next()
вместе с .next()
чтобы анимировать только элемент span
который является следующим ближайшим родственником вашего зависающего якоря:
$('ul.subnav li a').hover(function() {
$(this).next().animate({opacity: "show", top: "5"}, "slow");
}, function() {
$(this).next().animate({opacity: "hide", top: "-5"}, "slow");
});
@Felix имеет отличный ответ, но вы также можете использовать .siblings()
с вашей разметкой.
$('ul.subnav li a').hover(function() {
$(this).siblings().animate({opacity: "show", top: "5"}, "slow");
}, function() {
$(this).siblings().animate({opacity: "hide", top: "-5"}, "slow");
});
$(this).closest('li').find('.sub')
.next()
в этом случае будет быстрее.