2012-04-02 77 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