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