我建议:
var path = document.location.pathname;
$('a').filter(
function(i,e){
return $(this).attr('href').indexOf(path) == 0;
}).addClass('highlight');
JS 小提琴演示。
highlight
类名适当地定义了突出显示。
这是使用以下 HTML 测试的:
<a href="/about-us/">About us</a>
<a href="/products/">Products</a>
<a href="/_display/">_display</a>
<a href="/contact/">Contact</a>
请记住,这在 JS Fiddle 上得到了证明,因此它将匹配第三个a
元素(因为那是匹配的元素。
编辑以提供更通用的解决方案,您可以在其中匹配给定的目录/子目录:
function directory(path) {
if (!path) {
return false;
}
else {
var _tmp = path.split('/'),
directories = [];
for (var i = 0, len = _tmp.length; i < len; i++) {
if (_tmp[i].length > 0 && _tmp[i].indexOf('?') == -1) {
directories.push(_tmp[i]);
}
}
return directories;
}
}
// in the real world use:
// var path = document.location.pathname,
var path = '/products/some-catogory/sub-category/product/?x=y&z=x',
dir = directory('/products/some-catogory/sub-category/product/?x=y&z=x')[0];
$('a').filter(
function(i, e) {
return $(this).attr('href').indexOf(dir) == 0 || $(this).attr('href').indexOf('/' + dir) == 0
}).addClass('highlight');
JS 小提琴演示。