每次尝试单击列表项时,我都试图为其删除并设置一个活动类。我不明白哪里出了错。预先感谢
<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');
});
答案 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>