将活动类添加到jQuery

时间:2019-07-13 17:31:20

标签: jquery class

每次尝试单击列表项时,我都试图为其删除并设置一个活动类。我不明白哪里出了错。预先感谢

<ul id="active-menu" class="ul">
  <li class="menu_li">
    <a id="li1" class="blogname active" href="index.php">
      <?=$m1?>
    </a>
  </li>
  <li class="menu_li">
    <a id="li3" class="blogname" href="work.php">
      <?=$m3?>
    </a>
  </li>
  <li class="menu_li">
    <a id="li4" class="blogname" href="clients.php">
      <?=$m4?>
    </a>
  </li>
  <li class="menu_li">
    <a id="li2" class="blogname" href="blog.php">
      <?=$m2?>
    </a>
  </li>
  <li class="menu_li">
    <a id="li5" class="blogname" href="contact.php">
      <?=$m5?>
    </a>
  </li>
</ul>
$('#active-menu').on('click', 'a', function() {
  $('#active-menu a.active').removeClass('active');
  $(this).addClass('active');
});

2 个答案:

答案 0 :(得分:0)

根据您的需要,您不需要单击标签所需要的侦听器,而是必须使用$ _SERVER ['REQUEST_URI']获取当前页面名称,然后根据需要激活标签使用条件来添加活动类。

答案 1 :(得分:0)

我知道您将HTML包含在每个PHP文件中,作为固定菜单元素。

因此,只要有人单击菜单链接,它们基本上就会导航到另一个页面(除非您通过ajax加载链接-似乎并非如此)。在这种情况下,不需要通过jQuery添加/删除活动类-实际上,它也不会产生任何作用,因为当您离开时,元素的状态将不会保留。

如第一个答案所指出,您需要首先检查哪个页面已加载,然后在必要时在菜单项上添加“活动”类。

这可以通过首先确定活动页面来解决:

$request = $_SERVER['REQUEST_URI'];
$active_page = "";

if (strpos($request, 'blog.php') !== false) {
   $active_page = "blog";   
} else if (strpos($request, 'contact.php') !== false {
   $active_page = "contact";
}

...等等。然后,在列出菜单项时,可以检查它们是否为活动项,如果是,则可以添加活动类,例如:

<ul id="active-menu" class="ul">
  <li class="menu_li">
    <a class="blogname <?=$active_page == 'blog' ? 'active' : ''?>"  href="blog.php">
      Menu item text
    </a>
  </li>
  <li class="menu_li">
    <a class="blogname <?=$active_page == 'contact' ? 'active' : ''?>"  href="contact.php">
      Menu item text
    </a>
  </li>
</ul>