2011-06-30 37 views
1

我有以下腳本:自我。主動菜單項

(function($) { 
    $.fn.MenuAutoActive = function() { 

     var menus = $('ul li a'); 
     //menus.removeClass('active'); 

     var matches = menus.filter(function() { 
      return document.location.href.indexOf($(this).attr('href')) >= 0; 
     }); 

     matches.addClass('active'); 
    }; 

什麼ID的作用:

  • 它遍歷所有UL>李列表中搜索 '一'
  • 檢查「在 'For 'HREF'
  • 如果HREF =當前的URL將其添加class'active' 它

我與它唯一的問題,它只是看起來在href的最後一位:

例如:主菜單將是:

<ul> 
    <li><a href="index.html"></a></li> 
    <li><a href="Services/index.html"></a></li> 
    <li><a href="Portfolio/index.html"></a></li> 
    <li><a href="Conact/index.html"></a></li> 
</ul> 

URL = http://www.website.com/Services/

在這種情況下腳本不會標記爲<a href="Services/index.html"></a>,因爲該網址不包含index.html。

我該如何在URL的最後一個位置(last /之前)和最後一個位置之前(最後一個位置)查看?

任何幫助非常感謝!

皮特

+0

你有意使用相對路徑嗎?絕對路徑會很容易。 –

+0

基本上,將會有類別(例如課程類別)爲10(50-60)個子頁面 - 通過這個腳本+ 將更容易更新網站一個額外的子頁面。如果我把它全部放在一個文件夾中,並且沒有自動激活 - 我必須手動完成 - 這需要幾個小時。 – Iladarsda

+0

此外,還會有兩種類型的菜單,一種在頂部(白色類別 - 主菜單),另外還有左側菜單,其中包含當前類別的子頁面。腳本可以在左側菜單中正常工作(因爲沒有分類URL的短路徑),每個分類的每個頁面上的TOP菜單都是相同的 - 而且當前的腳本不適用於它 - 因爲它只能看到最後一塊網址。 – Iladarsda

回答

1

這應該工作:

return document.location.href.indexOf(this.href) >= 0; 

請注意,此訪問DOM元素的href財產。這將返回絕對URL。

所以this.href會給你http://www.website.com/index.html而不只是index.html

+0

那麼我將不得不使用完全絕對路徑?或者會照顧那個? – Iladarsda

+0

它可以與一起使用!這是完美的解決方案!謝謝。 – Iladarsda

+0

@Pete:是的,如果你不使用'base',那麼URL將被解釋爲相對的,並且路徑會根據你的網站而變化。儘管我認爲它應該仍然有效。無論如何,你有它的工作,這是最重要的事情:)快樂的編碼! –

0

嘗試更換

document.location.href.indexOf($(this).attr('href')) >0 

通過

document.location.toString().indexOf($(this).attr('href')) >0 
+0

Noop,這不起作用。 – Iladarsda

0
var bits=$(this).attr('href').split('/'); 
var thelastbit=bits.pop(); 
var thepenultimatebit=bits.pop(); // previous call removed the last bit 

可能會更快,如果你不把在index.html的鏈接擺在首位或詢問時將其刪除

return document.location.href.indexOf($(this).attr('href').replace('index.html','')) >= 0; 
+0

我必須把index.html - 用於主頁。 – Iladarsda

相關問題