В настоящее время я пытаюсь реализовать меню для Wordpress сайта со следующими критериями:Wordpress/JQuery: Выделите соответствующие анкеры при ДИВ в окне просмотра на свитке
- Когда пользователь прокручивает вниз страницы и достигает привязанный div (связанный в меню), ссылка в меню должна получить класс «active».
- Когда пользователь нажимает на якорь, страница должна прокрутить до привязанного div, и ссылка должна получить «активный» класс.
Вот HTML с этой страницы:
<nav class="sub-navigation">
<ul class="secondary-link">
<li><a href="#team"><span>Team</span></a></li>
<li><a href="#guidelines"><span>Guidelines</span></a></li>
<li><a href="#clients"><span>Clients</span></a></li>
</ul>
</nav>
Следующий код работает почти - однако, он выдает следующее сообщение об ошибке:
Uncaught Error: Syntax error, unrecognized expression: http://domain.com/not-the-current-page
jQuery(document).ready(function() {
jQuery(document).on("scroll", onScroll);
jQuery('.secondary-link a').click(function(event) {
event.preventDefault();
jQuery(document).off("scroll");
var link = this;
jQuery.smoothScroll({
offset: -100,
speed: 1000,
scrollTarget: link.hash
});
});
jQuery('.secondary-link a').click(function(){
jQuery('.secondary-link a').removeClass('active');
jQuery(this).addClass('active');
jQuery(document).on("scroll", onScroll);
});
function onScroll(event){
var scrollPos = jQuery(document).scrollTop();
jQuery('.secondary-link a').each(function() {
var currLink = jQuery(this);
var refElement = jQuery(currLink.attr('href'));
if (refElement.position().top <= scrollPos && refElement.position().top + refElement.height() > scrollPos) {
jQuery('.secondary-link a').removeClass("active");
currLink.addClass("active");
}
else{
currLink.removeClass("active");
}
});
}
});
Логика заключается в следующем:
- Слушайте свитка и добавьте "активный" класс соответственно.
- При щелчке на ссылке, остановка (1.), выделите якорь, добавить класс «активный», а затем возобновить (1.)
Это моя первая работа с JQuery. Надеюсь, один из вас может указать мне в правильном направлении, как правильно это сделать. Ваша помощь очень ценится!