2010-08-10 138 views
2

基本上這個想法是找出文檔的當前位置,並更改要更改的鏈接(導航手風琴)的類。到目前爲止,如果pageURL(變量)是實際的鏈接,但我不想創建可能的鏈接的整個列表,則$(location).att('href');jQuery:查找特定的HREF鏈接

$(document).ready(function() { 
    var pageURL = $(location).attr('href'); 
    $('a[href=pageURL]').attr('class', 'active'); 
}); 

從任何一個任何幫助,將不勝感激提前

+0

請注意,這需要你使用絕對路徑爲'href'值。 – Gumbo 2010-08-10 14:06:28

+0

@Gumbo:實際上jQuery現在可以在那個環境中工作,所以你不應該使用絕對值。它必須這樣做才能與瀏覽器的本機querySelectorAll實現保持一致,這些實現將在可用的情況下使用。儘管如此,我仍然建議首先使用類或id來依賴鏈接地址。 – bobince 2010-08-10 14:37:54

回答

6

感謝你需要的變量連接成選擇字符串。

$('a[href=' + pageURL + ']').attr('class', 'active'); }); 

你有它的方式,「PAGEURL」只是部分選擇的,這樣的jQuery一直在尋找<a>元素與「PAGEURL」爲href屬性。

此外,我不知道location變量代表什麼,但如果您正在查找當前窗口位置,則需要採用其他方法。

+0

謝謝帕特里克我目前正在使用該變量作爲此刻的鏈接可能需要JavaScript中的window.location無法放入其中的整個路徑(http://) – NWhite 2010-08-10 14:12:48

+0

@NWhite - 我以爲'window.location'在所有瀏覽器中爲您提供了'http://'。無論如何,如果不是,只需測試它並在必要時追加它。我會更新我的答案。 – user113716 2010-08-10 14:14:52

+0

對不起我的錯window.location是否使用Slaks中的location.pathname回答oops – NWhite 2010-08-10 14:18:52

4

通過編寫'a[href=pageURL]',您正在搜索的a元素的href屬性等於文字pageURL,而不是變量的內容。
相反,您需要將變量的內容連接到選擇器字符串中。

例如:

$('a[href*="' + location.pathname + '"]').attr('class', 'active'); 

有沒有在使用jQuery訪問location.href沒有意義的。
即使鏈接不包含域名,編寫location.pathname也會使其工作。
使用[href*=...]選擇器相匹配與href屬性元素包含的字符串。

+0

就像'/ foo/bar'包含'/ foo'。 – Gumbo 2010-08-10 14:25:46

+0

@Gumbo:如果這是一個問題,您可以將其更改爲'href $ =',它檢查它是否以該路徑結束。但是,這不會處理querystrings。 – SLaks 2010-08-10 14:28:59

1

正確的語法是:

$('a[href=' + pageURL + ']').attr('class', 'active'); });