【问题标题】:Manage or Highlight Active link or page in Codeigniter在 Codeigniter 中管理或突出显示活动链接或页面
【发布时间】:2016-04-13 07:14:52
【问题描述】:

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

<<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/nowaste_control/index#about

这里所有的页面都开始活跃了...

【问题讨论】:

  • echo $this->uri->segment(1);检查您的条件是否匹配
  • 什么返回 $this-&gt;uri-&gt;segment(1)
  • 它回来了
  • 这里也可以参考stackoverflow.com/questions/3357371/…你添加菜单的Helper文件了吗
  • 我在这里使用哈希片段,这就是为什么我没有得到

标签: php jquery codeigniter


【解决方案1】:

您实际上拥有包含多个段的 URL,但只比较第一个段。 segment() 仅从数组的第一个部分弹出。这意味着您只会收到nowaste_control 而永远不会收到index

您真正想要的是$this-&gt;uri-&gt;uri_string(),它将为您提供整个未更改的字符串。

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

所以你真正需要的是一个 JavaScript 解决方案。这是一个使用 jQuery 的方法。

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

【讨论】:

  • 查看页面需要做哪些更改
【解决方案2】:

如果你使用的是 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>

【讨论】:

    猜你喜欢
    • 2016-04-14
    • 1970-01-01
    • 2022-10-20
    • 1970-01-01
    • 1970-01-01
    • 2014-07-05
    • 1970-01-01
    • 1970-01-01
    • 2022-12-10
    相关资源
    最近更新 更多