如何将活动类添加到codeigniter超链接?

时间:2013-08-13 12:47:20

标签: php jquery css codeigniter

我知道这个问题很多,但我无法弄清楚如何使用已经回复的帖子来解决这个问题。

我有一个带导航链接的标题。我想将class="active"添加到当前处于活动状态的链接中。

如果我有以下导航,我怎么能这样做?

<nav>
    <ul id="main_nav">
        <li class="home">
            <a href="search">
                <i class="icon-search"></i>
                <span>BEDRIJF ZOEKEN</span>
            </a>
        </li>
        <li class="categorie">
            <a href="categorieen/all">
                <i class="icon-list-ul"></i>
                    <span>CATEGORIE</span>
            </a>
        </li>
        <li class="aanbieding">
            <a href="aanbiedingen">
                <i class="icon-shopping-cart"></i>
                    <span>AANBIEDING</span>
            </a>
        </li>
        <li class="vacature">
            <a href="vacatures">
                <i class="icon-copy"></i>
                <span>VACATURE</span>
            </a>
        </li>
        <li class="agenda">
            <a href="agenda">
                <i class="icon-calendar"></i>
                <span>AGENDA</span>
            </a>
        </li>
        <li class="contact">
            <a href="contact">
                <i class="icon-envelope"></i>
                <span>CONTACT</span>
            </a>
        </li>
    </ul>
</nav>

我尝试了这个,但它不起作用:

<script>
$(function() {
    var href = $(this).find('a').attr('href');
    alert(window.location.pathname)
    if (href === window.location.pathname) {
      $(this).addClass('active');
    }
}); 
</script>   

也许有更好的Codeigniter-ish方式?

4 个答案:

答案 0 :(得分:14)

尝试这个。我认为不需要javascript或jquery。

如果您使用的是codeigniter,则可以使用URI Class。

<li class="home">
    <a class="<?php if($this->uri->segment(1)=="search"){echo "active";}?>" href="<?=base_url('search')?>">
        <i class="icon-search"></i>
        <span>BEDRIJF ZOEKEN</span>
    </a>
</li>

如果您遇到任何问题,请告诉我

答案 1 :(得分:7)

我创建了一个帮助程序并将其保存到名为“menu_helper.php”的帮助程序目录中:

<?php 
if(!defined('BASEPATH')) exit('No direct script access allowed');

if(!function_exists('active_link')) {
  function activate_menu($controller) {
    // Getting the class instance.
    $ci = get_instance();
    // Getting the router class to actived it.
    $class = $ci->router->fetch_class();
    return ($class == $controller) ? 'active' : '';
  }
}

然后在config / autoload.php中,我在第91行添加了“menu”作为帮助。

最后一步是在访问页面时将代码打印为“活动”类(即登录页面):

<li class="<?php echo activate_menu('login'); ?>">    
  <?php echo anchor('login', 'Login'); ?> 
</li>

答案 2 :(得分:0)

if (href === window.location.pathname) {
   $('a[href='+ href +']').addClass('active');
}

答案 3 :(得分:0)

试试这个:

<a class="<?=(current_url()==base_url('search')) ? 'active':''?>" href="<?=base_url('search')?>">