2011-09-29 73 views
1

因此,我正在编写一个脚本,假设它可以说明导航的不同部分。每个导航链接都设置为/ directory/subdir /。它的工作,直到我意识到这需要更多。如果您位于不是索引文件的目录中,则它不起作用,因为它直接与HREF属性匹配。现在,我将如何从链接去掉filename.html并获取目录?感谢您的所有帮助贡献者!剥离链接中的file.html

+0

'“/目录/子目录”'应该工作到处都一样,因为它是一个_absolute_资源路径。你的意思是你有''dir/subdir“'作为资源路径(没有第一个斜杠)? – kzh

+0

那么事情是导航没有列出所有的子组件..即“/ dir/subdir /”将被列出,但“/dir/subdir/subpage.html”,所以它不能匹配该属性。我想我可能不得不使它成为一个子字符串 – Xeo

+0

你可以给一个例子,在也许? – kzh

回答

0
/****** LINK DETECTION ******/ 


var nav = $('.mainNav a'); 
var loc = document.location.pathname; 
var pathname = document.location.pathname.substring(1); 
var parts = pathname.split(/\//); 
var x = parts.length; 
var hrefStr = "/"+parts[0]+"/"+parts[1]+"/"; 

switch (x) { 
    case 2: 
    $('.mainNav a').each(function(index, element) { 
     if ($(this).attr('href') === loc) { 
      var node = nav.eq(index).parent('li'); 
      var gpnode = node.parents('li'); 
      node.addClass('active'); 
      gpnode.addClass('active'); 
     } 
    }); 
break; 

default: 

    $('.mainNav a').each(function(index, element) { 
     if ($(this).attr('href') === hrefStr) { 
      var node = nav.eq(index).parent('li'); 
      var gpnode = node.parents('li'); 
      node.addClass('active'); 
      gpnode.addClass('active'); 
     } 
    }); 
} 

/****** END LINK DETECTION ******/ 
1

如果我不要误会,你想高亮显示与

href="/dir/abc/" 

在你的菜单中的链接,而网页地址是一样的东西:

/dir/abc/index.shtml 
/dir/abc/detail.shtml 
/dir/abc/etc.shtml 

吧?我已经编辑了一下你的代码。希望这有助于:

var loc = document.location.pathname; 
var nav = $('.mainNav a'); 

nav.each(function(index, element) { 
    var href = $(this).attr('href') //-- edited 
    if (loc.indexOf(href)==0) {  //-- edited 
     var node = nav.eq(index).parent('li'); 
     var gpnode = node.parents('li'); 
     node.addClass('active'); 
     gpnode.addClass('active'); 

    } 
}); 
+0

去发布我去的代码,所以这更有意义,谢谢你的回复 – Xeo