我正在使用一些jQuery / JavaScript来检测页面的路径名,并为导航中的链接分配id
。它实质上将链接文本从黑色更改为蓝色。无论如何,我已经借用了一些代码并且我没有足够先进来找出RegExp
测试部分,但是当它通过主页作为路径/
时,它会分配{{1导航中的所有链接(id
传递正常)。有人可以帮我弄清楚为什么测试在路径名/index.html
上无法正常工作?
/
答案 0 :(得分:2)
这应该完成同样的任务:
var trailing_slash_re = /\/$/,
canon_url = location.pathname.replace(trailing_slash_re, '');
$('.nav ul li a').each(function() {
var this_url = this.href.replace(trailing_slash_re, '');
if (this_url.substr(-canon_url.length) == canon_url) {
this.id = 'selected';
return false; // don't process any others
}
});
对于每个链接,它确定它是否以canon_url
结尾。一旦找到匹配的锚,我就会跳出循环。这可以避免多个selected
ID。
答案 1 :(得分:1)
设置时
urlRegExp = new RegExp(url.replace(/\/$/,'') + "$");
您首先删除尾部斜杠。这是由您的正则表达式/\/$/
完成的。
当您传入/时,您将删除该斜杠,结果正则表达式为/$/
。这将匹配任何东西,因为它所寻找的是$
(在正则表达式中表示字符串的结尾)。解决方案可能涉及专门处理/ case(正如您所说,您已经完成并且上面的解决方案确实如此)。
如果你想搞乱正则表达式,我发现一个好的资源是http://gskinner.com/RegExr/