2011-09-29 49 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