如何在PHP / HTML中将特定的类名传递给特定的标记

时间:2012-09-24 16:36:29

标签: php html class

我还是前端开发的新手,并在我的第一个非常大的网站/ wordpress博客上工作。

所以我的问题是这个,我有一个菜单,在网站的所有页面上都是一样的。但是,每个部分的名称都会在菜单导航中突出显示。

当前的Nav_Bar标记:

<div id="nav_bar">

    <ul class="nav">
        <li class="nav_li"><a href="../index.html">Home</a></li>
        <li class="nav_li"><a href="#">About</a></li>
        <li class="nav_li selected"><a href="#blog_content">Blog</a></li>
        <li class="nav_li"><a href="#">Book</a></li>
        <li class="nav_li"><a href="#">Media</a></li>
        <li class="nav_li"><a href="#">Events</a></li>
        <li class="nav_li"><a href="#">Services</a></li>
        <li class="nav_li"><a href="#">Contact</a></li>

        <li class="search">
            <input type="text" onfocus="if(this.value == 'Search') { this.value = ''; }" value="Search" />

        </li>

        <li class="search_btn">
            <a href="#" title="Lets find it!"><div class="search_button">Go</div></a>
        </li>

    </ul>

</div><!-- nav_bar -->

现在我在使用这个简单的PHP代码之前构建页面:<?php include("menu.php"); ?>

但是,你们怎么样第一个:组织这个菜单接受和传入的值,比如menu.php + select =“home”和2nd你将如何传递该值以将一个选定的类添加到其中一个菜单项目

4 个答案:

答案 0 :(得分:2)

我假设您想要突出显示菜单项(而不是显示特定页面)的“传入值”?这是不必要的,因为浏览器已经知道它在哪个页面上。

这是在jQuery中突出显示当前页面的一种方法:

$('.nav li a').each(function(){
  var link = $(this).attr('href'),
    current_page = location.href;
  if(current_page.indexOf(link) != -1) {
      $(this).addClass('current-page');
  }
});

答案 1 :(得分:2)

首先关闭li&#34; nav_li&#34;是多余的,可以删除。使用.nav li来使用较少的代码行来引用这些列表项。这适用于JQuery选择器和CSS选择器。第二,回答你的实际问题;我会按如下方式使用活动类:

// Assuming the following html. <ul class="nav"><li><a href="/about.php">About</a></li></ul>    

$('.nav li').click(function() {
    $('.nav li.active').removeClass('.active');
    $(this).addClass('.active');
    window.location = $(this).children('a').attr('href');
    return;
});

现在,在您保留导航栏的区域中,您可以通过以下方式检查当前网址是否处于活动状态:

<?php    
$currentUri = $_SERVER['REQUEST_URI'];
<ul class="nav">
    <li class="<?php if($currentUri == '/about.php') {echo 'active';} ?>"><a href="/about.php">About</a></li>
</ul>

将php脚本中的条件添加到每个列表项。

此致 凯文

答案 2 :(得分:1)

这可以使用javascript

完成
var url=document.location.toString();
if(url=="http://www.something.com/some.php")
{
//code to add class to specific link
}
else if(url=="http://www.something.com/someelse.php")
{
//code to add class to specific link
}

您也可以在menu.php

的服务器端执行此操作
$url=$_SERVER['REQUEST_URI'] 

然后检查网址并相应地添加类名

答案 3 :(得分:1)

在包含之前,在某个参数中设置一个值,例如$page = 'blog',然后在menu.php中

<li class="nav_li<?php echo $page === 'blog' ? " selected='selected'" : "" ?>"><a href="#blog_content">Blog</a></li>