2010-10-20 17 views
1

我有一個主導航,但我需要將'current'的類應用到<li>,前提是它與我指定的URL匹配。根據當前URL |應用一個類jquery

這是我有:

$(function() { 

    var url = location.pathname; 

    if(url.indexOf('girls')) { 
    $("li#nav-01").addClass('current'); 
    } 

    if(url.indexOf('boys')) { 
    $("li#nav-02").addClass('current'); 
    } 

    if(url.indexOf('capes')) { 
    $("li#nav-03").addClass('current'); 
    } 

    if(url.indexOf('about_us')) { 
    $("li#nav-04").addClass('current'); 
    } 

    if(url.indexOf('contact')) { 
    $("li#nav-05").addClass('current'); 
    } 

    if(url.indexOf('frequently_asked_questions')) { 
    $("li#nav-06").addClass('current'); 
    } 
}); 

然後

<div id="nav-main"> 
<ul class="navmain"> 
<li id="nav-01" class=""><a href="../girls/">Girls</a></li> 
<li id="nav-02" class=""><a href="../boys/">Boys</a></li> 
<li id="nav-03" class=""><a href="../capes/">Accessories</a></li> 
... 
</ul> 
</div> 

這似乎並沒有工作,所以我要尋找的東西 ,讓我把完整的URL直到某個目錄。

所以我有。

'如果(url.indexOf ......'

我想沿着線的東西:

「如果(URL = HTTP://www.siteaddress/directory/。 ..「

那麼接下來,如果當前的URL是」取決於URL「,那麼我指定的<li>應選擇... /目錄名/(‘當前’),是。

感謝您的閱讀。

回答

0

我可能會將潛在的目錄匹配放在一個數組中,然後查找數組中目錄的索引,並使用該索引號來指定要使用的ID。

因爲該索引將以0爲基礎,因此我已將1添加到索引中,爲您提供基於1的索引,例如您的導航。

$(function() { 

    var arr = ['girls','boys','capes','about_us','contact','frequently_asked_questions']; 
    var dir = location.pathname.split('/')[1]; 
    var index = $.inArray(dir, arr) + 1; 
    $("#nav-0" + index).addClass('current'); 

}); 
  • arr存儲目錄名
  • dir是在/字符的路徑名裂。索引[1]的項目應該是第一個目錄。
  • index存儲the $.inArray method的結果,該結果遍歷arr陣列,查找與dir匹配的數組,並返回索引編號。 (再次1被添加以匹配您的索引。)
  • 然後將index連接到選擇器中,以選擇合適的一個。

編輯:改成了使用正則表達式的分裂。不應該有必要。

+0

感謝您的快速回復我一直在嘗試了代碼,但它似乎並沒有成爲類適用於資產淨值, 這是我有: $(函數(){VAR arr = ['girls','boys','capes','about_us','contact','frequently_asked_questions']; var dir = location.pathname.split(/ \ // // [1]; var index = $ .inArray(dir,arr)+ 1; $(「。navmain>#nav-0」+ index).addClass('current'); }); 然後:

user482201 2010-10-20 20:37:12

+0

好快速評論不喜歡格式化我已將代碼添加到第一篇文章。 – user482201 2010-10-20 20:38:01

+0

@user - 它似乎爲我工作。 [這是一個例子。](http://jsbin.com/abixe4/2/)我改變的唯一的事情是,我給了'dir'一個靜態值的「女孩」。試試'alert(dir)'看看你得到了什麼價值。 – user113716 2010-10-20 20:45:50

0

爲什麼要使用數組?

使用與patrick dw的代碼相同的dir var ...

var dir = location.pathname.split('/')[1]; 
    $('ul.navmain').find('a[href*="' + dir + '"]').parent().addClass('current'); 
+0

你真的應該發佈更多的答案,而不只是一個鏈接到文檔。你會如何使用這個選擇器來解決這個問題? – user113716 2010-10-20 20:37:35

+0

反正我發佈了錯誤的鏈接... – mike 2010-10-20 22:18:26

+0

對數組的好處(因爲你問了)是索引允許用ID直接選擇,這將比按類選擇一個祖先更快,然後必須測試'href'後代元素的屬性。你也可以通過[attribute-contains](http://api.jquery.com/attribute-contains-selector/)選擇器誤報。 – user113716 2010-10-21 00:02:14