У меня есть одностраничный веб-сайт с некоторыми ссылками ссылок как li's
в ul
, у меня также есть два меню, которые включают одинаковые ссылки ссылок.
Меню выглядит так:
<div id="nav">
<ul>
<li><a href="#home" class="current_page_item" onclick="closeNav();">Home<li>
<li><a href="#about" onclick="closeNav();">About<li>
<li><a href="#faq" onclick="closeNav();">FAQ<li>
<li><a href="#contact" onclick="closeNav();">Contact<li>
</ul>
</div>
Я нашел некоторый код, который позволяет мне выделить текущую ссылку привязки из обоих этих меню (которая работает):
const navsStr = '#nav li, #foot li';
$(navsStr).on('click', function (e) {
e.preventDefault();
const href = $(this).find('a').attr('href');
let items = $(navsStr).find("a[href$='" + href + "']");
$(items).parent().addClass('current_page_item').siblings().removeClass('current_page_item');
});
Я также хотел бы выделить эти якорные ссылки, когда пользователь прокручивает страницу вниз. Я добавил следующий код в нижний колонтитул js, но, похоже, он не работает.Я предполагаю, что новый код конфликтует с моим существующим кодом, который я уже использую для выделения элементов навигации, но даже если я удалю этот код, код выделения прокрутки не будет работать.Код работает на другом сайте, но я не пытаюсь использовать несколько меню, поэтому я думаю, что делаю что-то не так.
$(document).ready(function(){
var $sections = $('#nav, #overlay');
$(window).scroll(function(){
var currentScroll = $(this).scrollTop();
var $currentSection
$sections.each(function(){
var divPosition = $(this).offset().top;
if( divPosition - 1 < currentScroll ){
$currentSection = $(this);
}
var id = $currentSection.attr('id');
$('a').removeClass('current_page_item');
$("[href=#"+id+"]").addClass('current_page_item');
})
});
});