Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何在页面重新加载后突出显示导航栏中的活动菜单项_Jquery_Asp.net_Asp.net Mvc_Twitter Bootstrap_Twitter Bootstrap 3 - Fatal编程技术网

Jquery 如何在页面重新加载后突出显示导航栏中的活动菜单项

Jquery 如何在页面重新加载后突出显示导航栏中的活动菜单项,jquery,asp.net,asp.net-mvc,twitter-bootstrap,twitter-bootstrap-3,Jquery,Asp.net,Asp.net Mvc,Twitter Bootstrap,Twitter Bootstrap 3,Bootstrap 3导航栏菜单是使用下面的代码定义的。 若从菜单中选择该项,则从服务器加载新页面。每个页面中都会出现相同的引导菜单。 但是,不用于选择菜单的下拉列表不会突出显示 如果允许本地存储,如何强制bootstrat自动点亮上次选择的菜单项:将上次选择的项存储在本地存储中。如果加载了新页面,则获取上次单击的菜单项名称,并通过向其中添加activeclass来突出显示它 通过动态地将活动类添加到适当的项中,在服务器请求中更改生成的菜单。 如何在没有这种改变的情况下实现这一点? 服务器端使用

Bootstrap 3导航栏菜单是使用下面的代码定义的。 若从菜单中选择该项,则从服务器加载新页面。每个页面中都会出现相同的引导菜单。 但是,不用于选择菜单的下拉列表不会突出显示

如果允许本地存储,如何强制bootstrat自动点亮上次选择的菜单项:将上次选择的项存储在本地存储中。如果加载了新页面,则获取上次单击的菜单项名称,并通过向其中添加
active
class来突出显示它

通过动态地将活动类添加到适当的项中,在服务器请求中更改生成的菜单。 如何在没有这种改变的情况下实现这一点? 服务器端使用ASP.NET MVC4。也许可以使用浏览器中的jquery+localstorage或一些简单的ASP.NET MVC4解决方案

<nav class="navbar navbar-default">
  <div class="container-fluid">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
    </div>

    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
      <ul class="nav navbar-nav">
        <li class="dropdown">
          <a href='#' class="dropdown-toggle" data-toggle="dropdown">Dropdown 1</a>
          <ul class="dropdown-menu" role="menu">
            <li><a href='somepage'>Action11</a></li>
            <li><a href='somepage'>Action12</a></li>
            <li><a href='somepage'>Action13</a></li>
          </ul>
        </li>

        <li class="dropdown">
          <a class="dropdown-toggle" data-toggle="dropdown">Dropdown 2</a>
          <ul class="dropdown-menu" role="menu">
            <li><a href='somepage'>Action121</a></li>
            <li><a href='somepage'>Action122</a></li>
            <li><a href='somepage'>Action123</a></li>
          </ul>
        </li>
      </ul>
    </div><!-- /.navbar-collapse -->
  </div><!-- /.container-fluid -->
</nav>

您可以做的是在请求的操作中设置查看包值。之后,创建一个逻辑,在构造菜单时请求该值


我使用该机制,但使用actionfilter并将其用于操作或控制器注释

我遇到了类似的问题,并编写了以下脚本:

var _urlpath = $(location).attr('pathname').split('/').pop();

    $('#menu > li').each(function(){
        var _this = $(this);
        var _str = _this.find('a').attr('href');
        _str !== _urlpath ? _this.removeClass('active') : _this.addClass('active');
    });
这相当简单,过滤url路径名,将其存储在变量中,然后最重要的是,当加载新页面时,循环遍历所有li,并尝试将url哈希(对不起,我不知道确切的术语)与
li>a
中的哈希匹配

也许有更好的办法


另外,您可能需要稍微修改一下代码

这是大量的工作。也许可以在客户端或其他类似的解决方案中使用几行jquery脚本和本地存储?我尝试过,但它不适用于包含下拉栏和查询字符串的Bootstrap3菜单。我更新了问题。我不得不用$(“#menu>ul>li”)替换$(“#menu>ul>li”),然后它开始运行良好且简单,只要您不使用服务器。这对解决我的问题有很大帮助。非常感谢。
var _urlpath = $(location).attr('pathname').split('/').pop();

    $('#menu > li').each(function(){
        var _this = $(this);
        var _str = _this.find('a').attr('href');
        _str !== _urlpath ? _this.removeClass('active') : _this.addClass('active');
    });