Javascript实现页面左边的菜单选中项高亮显示
在项目开发过程中,遇到一个问题
在一个模板页面中,Layout.cshtml,页面左边放了一个菜单项menu,每一项都是一个链接到一个新的页面。但所有页面都是用这个模板Layout.cshtml。需要当你点击到menu上某一项时,该项应用css class "selected"高亮显示。
Layout.cshtml代码如下:
<div class="sidebar-wrap">
<ul class="sidebar-ul" id="ProductNav"> <li>
<a class="selected" href="/product1">product1</a>
</li>
<li>
<a href="/product2">product2</a>
</li>
<li>
<a href="/product3">product3</a>
</li>
<li>
<a href="/product4">product4</a>
</li>
<li>
<a href="/product5">product5</a>
</li>
<li>
<a href="/product6">product6</a>
</li> </ul>
</div>
刚开始,我写了一个JavaScript脚本,如下:
<div class="sidebar-wrap">
<ul class="sidebar-ul" id="ProductNav"> <li>
<a class="selected" href="/product1">product1</a>
</li>
<li>
<a href="/product2">product2</a>
</li>
<li>
<a href="/product3">product3</a>
</li>
<li>
<a href="/product4">product4</a>
</li>
<li>
<a href="/product5">product5</a>
</li>
<li>
<a href="/product6">product6</a>
</li> </ul>
</div> <script type="text/javascript" src="/scripts/jquery.min.js"></script>
<script type='text/javascript'>
$(document).ready(function(){ $('#ProductNav li a').click(function(){ $('#ProductNav li a.selected').removeClass('selected');
$(this).addClass('selected');
});
});
</script>
发现并不起作用,点击时,又回到原来的那个product1高亮显示。
原因很简单,因为每一次点击,比如点击product2,它就会进入一个新的页面product2,会重新加载一次Layout.cshtml,而这个javascript是在product1页面执行的,你点击product2,重新加载Layout.cshtml, 还是上面的代码,product1为selected
那么如何实现呢。弄了好久,终于发现一个简便的办法。当从product1页面,点击product2时,用window.location.pathname获取"/product2",从中取出product2. 然后在menu中的每个链接<a>中加上class,class名就是这个名(比如product2).
这样去匹配,匹配上的,就说明是当前页面,就加上css "selected"
具体如下
<div class="sidebar-wrap">
<ul class="sidebar-ul" id="ProductNav"> <li>
<a class="product1" href="/product1">product1</a>
</li>
<li>
<a class="product2" href="/product2">product2</a>
</li>
<li>
<a class="product3" href="/product3">product3</a>
</li>
<li>
<a class="product4" href="/product4">product4</a>
</li>
<li>
<a class="product5" href="/product5">product5</a>
</li>
<li>
<a class="product6" href="/product6">product6</a>
</li> </ul>
</div>
新的JavaScript如下
<script type="text/javascript" src="/scripts/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
var path = window.location.pathname;
path = path.replace('/', '');
$("." + path).addClass('selected'); }); </script>
如此,就大功告成了.
Javascript实现页面左边的菜单选中项高亮显示的更多相关文章
- JavaScript网站设计实践(二)实现导航栏当前所选页面的菜单项高亮显示
一.(一)中的代码还可以修改的地方. 在(一)中,如果是运行在服务器下,如apache等,可以把head和navigation的div抽取出来,放置在另一个html文件里,然后在页面中,include ...
- MVC中导航菜单,选中项的高亮问题。
这个菜单是放在母板页的.比如当前选中的是异常业务监控.如果页面刷新了.就会变成第一张图..选择其他的选项也会,因为页面会刷新嘛.. 怎么处理这个问题了? 答案是记录当前页面的url. 有两种解决思 ...
- MVC中导航菜单,选中项的高亮问题。。
先上图: 这个菜单是放在母板页的.比如当前选中的是异常业务监控.如果页面刷新了.就会变成第一张图..选择其他的选项也会,因为页面会刷新嘛.. 怎么处理这个问题了? 答案是记录当 ...
- 使用jQuery 中的显示与隐藏动画效果实现折叠下拉菜单的收缩和展开,在页面的列表中有若干项,列表的每项中有一个二级列表,二级列表默认为隐藏状态。点击列表的项,切换二级列表的显示或隐藏状态
查看本章节 查看作业目录 需求说明: 使用jQuery 中的显示与隐藏动画效果实现折叠下拉菜单的收缩和展开,在页面的列表中有若干项,列表的每项中有一个二级列表,二级列表默认为隐藏状态.点击列表的项,切 ...
- 用JavaScript获取页面上被选中的文字的技巧
这里介绍的一个小技巧是如何用JavaScript获取页面上被选中的文字的方法.最关键的JavaScript API是: event.selection = window.getSelection(); ...
- wpf datagrid设置右键菜单打开时选中项的背景色
原文:wpf datagrid设置右键菜单打开时选中项的背景色 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/huangli321456/artic ...
- 刷新各ifream当前页,下拉项改变触发事件js,给选中项加背景色js
<script type="text/javascript" language="javascript"> //刷新框架各页面 function r ...
- jquery操作select下拉框的各种方法,获取选中项的值或文本,根据指定的值或文本选中select的option项等
简介jquery里对select进行各种操作的方法,如联动.取值.根据值或文本来选中指定的select下拉框指定的option选项,读取select选中项的值和文本等. 这一章,站长总结一下jquer ...
- ASP.NET Core Blazor 用Inspinia静态页模板搭建简易后台(实现菜单选中)
Blazor 是一个用于使用 .NET 生成交互式客户端 Web UI 的框架: 使用 C# 代替 JavaScript 来创建丰富的交互式 UI. 共享使用 .NET 编写的服务器端和客户端应用逻辑 ...
随机推荐
- C#中GroupBox控件的使用(转)
GroupBox(框架)控件是C#中用来组织其他控件形成一个控件组,它的使用方法为[工具箱]->[所有Windows窗体](或者是[容器]列表中)->[GroupBox],拖拽到窗体界面中 ...
- CALL FUNCTION 'BAPI_PO_CREATE1' 相关报错
*&---------------------------------------------------------------------**& Report ZQJ06*&am ...
- kinect/xiton 的环境搭建 + rgb图像和深度图的标定
~ 软件下载地址 openni https://structure.io/openni https://github.com/OpenNI/OpenNI2 其他软件建议直接下载或通过某宝购买配套的 ~ ...
- Java for LeetCode 113 Path Sum II
Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given su ...
- Java for LeetCode 102 Binary Tree Level Order Traversal
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...
- LeetCode:矩形区域【223】
LeetCode:矩形区域[223] 题目描述 在二维平面上计算出两个由直线构成的矩形重叠后形成的总面积. 每个矩形由其左下顶点和右上顶点坐标表示,如图所示. 示例: 输入: -3, 0, 3, 4, ...
- ESP8266串口模块的基本使用【转】
本文转载自:http://www.shaoguoji.cn/2017/01/15/ESP8266-usage/ ESP8266是一款超低功耗的UART-WiFi 透传模块,拥有业内极富竞争力的封装尺寸 ...
- 什么是XXX
1.什么事框架 框架式一组程序的集合,包含了一系列的最佳实践,作用是 解决某个领域的问题. 当我们使用某个框架时,其实是把一系列JAR包加载到CLASSPATH路径中,实际上是获得了JAR中所有对J ...
- SDUT OJ I样(0-1背包问题 【模板】)
I样 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 这是个什么问题呢?DP,贪心,数据结构,图论,数论还是计算几何?管他呢,反正 ...
- Hadoop HA- hadoop集群部署
前期部署,至少准备3台服务器(可以是虚拟机) 1.linux系统环境准备 ip地址配置 hostname配置 hosts映射配置 关闭防火墙 service iptables stop ,也可以设置防 ...