我的情况:
我有几个页面,如home.php
,about.php
,gallery.php
...
在所有这些页面中,我包含带有php的锚点的菜单。所以菜单不在页面中。在所有页面中,我都有一行:include('includes/menu.php');
我想要实现的目标:如果url是mydomain.com /gallery.php
,菜单中的锚点应该有一个额外的类"active"
,所以我可以设置不同的样式(当前页面打开)。
我用jquery尝试过:
我给了所有主持人一个类"clickable"
,如下所示:
<ul class="main-menu">
<li><a class="clickable" href="index.php">Home</a></li>
<li><a class="clickable" href="gallery.php">Gallery</a></li>
<li><a class="clickable" href="openingtimes.php">Openingtimes</a></li>
</ul>
并加载此jquery代码:
$(document).ready(function()
{
$(function() { //run when the DOM is ready
$(".clickable").click(function() {
$(this).addClass("active"); //add the class to the clicked element
});
});
});
但是出现的问题是:当点击主播时,让我们说gallery.php
,它会获得课程&#34;有效&#39;很快,但gallery.php正在加载,菜单再次通过PHP包含。当然,这只有在你停留在同一页面时才有效。
在加载特定页面时,如果使用这种情况使锚点处于活动状态,我能做些什么? 也许阅读网址,然后在这个网址的基础上添加一个类到锚?
答案 0 :(得分:2)
使用$_SERVER['PHP_SELF']
或$_SERVER['REQUEST_URI']
尝试使用:
<ul class="main-menu">
<li><a class="clickable <?php if($_SERVER['PHP_SELF'] == '/index.php') { echo "active"; } ?>" href="index.php">Home</a></li>
<li><a class="clickable <?php if($_SERVER['PHP_SELF'] == '/gallery.php') { echo "active"; } ?>" href="gallery.php">Gallery</a></li>
<li><a class="clickable <?php if($_SERVER['PHP_SELF'] == '/openingtimes.php') { echo "active"; } ?>" href="openingtimes.php">Openingtimes</a></li>
</ul>
还要确保文件是否在另一个目录中以添加名称ex。 if($_SERVER['PHP_SELF'] == '/folder/index.php')