2012-04-02 94 views
8

我有我的東西認爲是一個簡單的問題,但我無法讓它爲我的生活工作。jQuery根據頁面URL添加課程

我想要做的就是在頁面上添加一些javascript,該頁面根據URL向主頁面容器添加一個類。

比方說,我在root.com一個網站,下面的HTML結構(非嚴格意義上):

<html> 
    <head> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
    </head> 
    <body> 
    <div id="main" class="wrapper"> 
     Blah, blah, blah 
    </body> 
</html> 

我想要做的是一個腳本,如果頁面=(例如)根.com/technology,它爲主格添加了一個類。所以div現在看起來像:

 <div id="main" class="wrapper tech"> 

我已經加載了jquery,所以我想這樣做。

回答

23

您可以使用window.location獲取當前URL,然後根據該切換開關:

$(function() { 
    var loc = window.location.href; // returns the full URL 
    if(/technology/.test(loc)) { 
    $('#main').addClass('tech'); 
    } 
}); 

這使用正則表達式來查看URL是否包含特定短語(特別是:technology),如果是,則將類添加到#main元素。

+0

這工作。謝謝。 – 2012-04-03 01:48:09

+0

優秀的作品非常感謝。 – 422 2013-05-23 22:23:48

+0

@alex vidal它對我來說工作正常,但加載時間比正常晚了一點。我使用這個動作來保持子菜單在用戶處於確定狀態時打開。因此,用戶可以在1-2秒之後看到子類別菜單是如何打開的。我希望立即做到這一點,我該如何避免這種情況? – 2013-09-26 19:54:28

2

使用location內置對象來確定完整的URL或它的一些部分。

+0

顯然這是正確的,但它並沒有完全回答我的問題*如何做到這一點。 – 2012-04-03 01:48:00

2

會像下面的幫助?根據對方的回答,只是做

的console.log(window.location的)

,你可以致富信息豐富與您的位置對象

 if(window.location.href=== "root.com/technology") { 
     $("#main").addClass("tech"); 
    } 
7

嗯,這裏是我會怎麼做:

switch (window.location.pathname) { 
    case '/technology': 
     $('#main').addClass('tech') 
    case '/something': 
    case '/somestuff': 
     $('#main').addClass('some') 
} 

這樣,你讓你的代碼乾淨,你可以輕鬆地添加另一種情況。

請參閱here什麼window.location.pathname的含義。

+0

我喜歡這個,因爲正如你所說的,你可以輕鬆地添加另一個案例而不會把事情弄糟。但我不能得到它的工作... – 2012-04-03 01:46:21

+0

我喜歡這個答案更好,然後選擇'最好'的答案。開關語句更清晰,然後寫出條件。 – IE5Master 2015-08-10 14:42:00