管理或突出显示Codeigniter中的活动链接或页面


Manage or Highlight Active link or page in Codeigniter

我知道这个问题经常出现,但我只是不知道如何使用已经回答过的帖子来做到这一点。这是我的浏览页面

<<li class="active"> <a class="page-scroll" href="<?php echo base_url();?>nowaste_control/index#about">Home</a> </li>
    <li ><a class="page-scroll" href="<?php echo site_url('nowaste_control/index#product'); ?>">Products</a> </li>
    <li > <a class="page-scroll" href="<?php echo base_url();?>nowaste_control/index#technology">Technology</a> </li>

这是我的jquery

<script type="text/javascript">
jQuery(function($){
  $('a[href="'+window.location.pathname+window.location.hash+'"]').parent().addClass('active');
 });
</script>

我的路径是关于的localhost/nowaste/nowase_control/index#

这里所有的页面都处于活动状态。。。

您实际上有多个段的URL,但只比较第一个。segment()仅从阵列的第一部分弹出。这意味着你只得到了nowaste_control,而从来没有得到过index

您实际想要的是$this->uri->uri_string(),它将为您提供整个未更改的字符串。

这带来了另一个问题,即您的链接正在使用hash fragment(#),然而,codeigniter永远不会在URL请求中观察到这一点,因为Apache不会在请求中接收到这一信息,它只适用于客户端。

因此,您实际需要的是一个JavaScript解决方案。下面是一个使用jQuery的例子。

jQuery(function($){
    $('a[href="'+window.location.pathname+window.location.hash+'"]').parent().addClass('active');
});

如果您正在使用JQuery,也许您可以通过在客户端处理它来完成这样的操作:

<script type="text/javascript">
    $(function() {
      alert("Current Pathname:" + window.location.pathname);
      if(window.location.pathname=="some path"){
        $("#someLi").addClass("active");
      }else if(window.location.pathname=="some other path"){
        //..
      }
    });
</script>