在导航菜单中突出显示当前页面?

时间:2014-01-03 07:03:06

标签: javascript jquery html uinavigationbar

我在网上看到了使用Jquery突出显示当前菜单导航的各种方法,我在下面看到了一些代码。代码工作得很完美,但我不太了解第二行,我想知道你们其中一个人是否可以解释一下。

var url = window.location.href;
url = url.substr(url.lastIndexOf("/") + 1);
$("#mainMenu").find("a[href='" + url + "']").addClass("current");

提前致谢!

4 个答案:

答案 0 :(得分:4)

url = url.substr(url.lastIndexOf("/") + 1);

简单地抓住网址的最后一段。例如,如果网址是

foo.com/module/submodule

它将返回submodule

通过查找/的最后一个索引,然后将 1 + 传递给substr来实现此目的。

根据您对The part that got me confused was the '+1' at the end的评论,请注意substr采用子字符串开始的索引。您不希望在/处启动子字符串,因此添加1以便子字符串将从紧跟在最后/之后的字符处开始。

为了完整性,返回url的整个剩余部分,因为没有第二个参数传递给substr。如果已传递第二个参数,则仅返回该字符数。

More info on substr

答案 1 :(得分:0)

结帐substr()lastIndexOf()

substr()方法返回从指定位置开始的字符串中的字符到指定的字符数。

lastIndexOf()方法返回指定值最后一次出现的调用String对象中的索引,如果未找到则返回-1。向后搜索调用字符串,默认情况下从0开始。

答案 2 :(得分:0)

var url返回字符串值,字符串是字符数组。鉴于它是一个数组,每个角色都有一个位置。

url = url.substr(url.lastIndexOf("/") + 1);

我们正在做的是读取url值,并在网址的最后/之后开始获取它的子字符串,直到值的结尾。

要了解详情,请在此处阅读:http://www.w3schools.com/jsref/jsref_substr.asp

这里也有点小提琴:http://jsfiddle.net/gd5Xr/

答案 3 :(得分:0)

解决方案中的第二行会修剪上一个/的完整当前网址。

  • substr() =这会修剪给定的字符串,在本例中为完整网址。

  • lastIndexOf() =此方法带来给定参数的索引整数。在这 来自给定网址的案例,最后/的索引号。

  • substr的+1只是为了避免新裁剪值的最后/