我在网上看到了使用Jquery突出显示当前菜单导航的各种方法,我在下面看到了一些代码。代码工作得很完美,但我不太了解第二行,我想知道你们其中一个人是否可以解释一下。
var url = window.location.href;
url = url.substr(url.lastIndexOf("/") + 1);
$("#mainMenu").find("a[href='" + url + "']").addClass("current");
提前致谢!
答案 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。如果已传递第二个参数,则仅返回该字符数。
答案 1 :(得分:0)
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只是为了避免新裁剪值的最后/
。