简体   繁体   English

li class 活动页面

[英]li class active page

I can add it with the code I wrote in nav menu a, but I want to add it to li class instead of a href.我可以用我在导航菜单a中编写的代码添加它,但我想将它添加到li class而不是href。 and I want this event to start at the beginning of the page.我希望这个事件从页面的开头开始。

normally when I use it like this now, the page does not write active.通常当我现在这样使用它时,页面不会写入活动。 I will be very happy if you can help.如果您能提供帮助,我将非常高兴。

<div class="middle_right right header_side">
  <div class="header_side_container">
    <div class="header_builder_component header_builder_menu_component">
      <nav class="main-menu main_menu_container menu_line_enable">
        <ul id="menu-main-menu" class="menu">
          <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1032">
            <a href="home.php"><span>Home</span></a>
          </li>
          <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1033">
            <a href="videos.php"><span>videos</span></a>
          </li>
          <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1034">
            <a href="gallery.php">
              <span>gallery</span>
            </a>
          </li>
          <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1035">
            <a href="about.php">
              <span>about</span>
            </a>
          </li>
          <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1036">
            <a href="contact.php">
              <span>contact</span>
            </a>
          </li>
      </nav>
    </div>
  </div>
</div>
function updateMenu(url) {
  const active = document.querySelector('.main-menu a.active');
  if (active !== null) {
    active.classList.remove('active');
  }

  const links = Array.from(document.querySelectorAll('.main-menu a'));
  const index = links.map(link => link.href).findIndex((href) => {
    return url.indexOf(href) !== -1;
  });

  if (index !== -1) {
    links[index].classList.add('active');
  }
}

barba.hooks.before((data) => {
  updateMenu(data.trigger.href);
});

Instead of looping through the anchors, you can loop through the list items, and grab the anchor within the list item, and compare the URLs and add the active class to the list item as needed.您可以遍历列表项,而不是遍历锚点,并在列表项中获取锚点,然后比较 URL 并根据需要将活动的 class 添加到列表项中。

For this, map isn't needed, you can use a normal foreach and an if statement.为此, map ,您可以使用普通的foreachif语句。

    <div class="middle_right right header_side">
    <div class="header_side_container">
    <div class="header_builder_component header_builder_menu_component">
    <nav class="main-menu main_menu_container menu_line_enable">
    <ul id="menu-main-menu" class="menu">
    <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1032">
    <a href="home.php"><span>Home</span></a>
    </li>
    <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1033">
    <a href="videos.php"><span>videos</span></a>
    </li>
    <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1034">
    <a href="gallery.php">
    <span>gallery</span>
    </a>
    </li>
    <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1035">
    <a href="about.php">
    <span>about</span>
    </a>
    </li>
    <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1036">
    <a href="contact.php">
    <span>contact</span>
    </a>
    </li>
    </nav>
    </div>
    </div>
    </div>
    function updateMenu(url) {
            const active = document.querySelector('.menu-item.active');
    
            if (active !== null) {
                active.classList.remove('active');
            }
    
            const links = Array.from(document.querySelectorAll('.menu-item'));

            links.forEach(function(li){
               let anchor = li.querySelector("a");
               if(url.indexOf(anchor.href) > -1){
                   li.classList.add("active");
                }
            });
        }

      updateMenu(window.location.href);

   /* barba.hooks.before((data) => {
            updateMenu(data.trigger.href);
        });
*/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM