2012-07-13 52 views
2

我正在使用下面的JavaScript来添加基于url名称的类。如何使用目录中的文件url在JavaScript中添加第二个类?

$(function(){ 
    var loc = window.location.pathname.match(/^\/?(\w+)\b/); 
    if(loc) $(document.body).addClass(loc[1].toLowerCase()); 
} 

它工作正常,除非文件在目录内,它只添加文件夹名称而不是文件名。我加了第二个变量但是加我没有合适的表情它不断增加对整个URL产品/ nameoffile.php作为类

$(function(){ 
    var loc = window.location.pathname.match(/^\/?(\w+)\b/); 
    var loc2 = window.location.pathname.match(/^\/?(.*)\b/); 
    if(loc) $(document.body).addClass(loc[1].toLowerCase()); 
    if(loc2) $(document.body).addClass(loc2[1].toLowerCase()); 
} 

我想知道正确的表达添加类为目录中的文件添加第二个类。而不是'products/nameoffile.php',我只想'nameoffile'将这个类添加到body中。

+0

你应该能够在您的正则表达式组合成类似'/^\ /(\ w +) (。*)\ b /',它将返回一个包含棋子的数组。我的正则表达式可能不是你所需要的,但它只是一个简单的例子 – MrOBrian 2012-07-13 23:26:16

回答

0

试试这个:

$(function(){ 
    var loc = window.location.pathname.split("/"); 
    if (loc[loc.length-1]) { 
     var cls = loc[loc.length-1]].split('.'); 
     $('body').addClass(cls[0].toLowerCase()); 
    } 
}) 

DEMO

+0

这适用于主目录。但是,当我创建名为'products'的文件夹并将此代码放置在产品页面上时,它不会添加正确的类名称。它使用目录的名称而不是文件名。 – derkoidus 2012-07-13 23:39:22

+0

@derkoidus尝试更新的答案。 – undefined 2012-07-13 23:45:22

0

不要使用正则表达式,只使用一个简单split()pop()

var loc = window.location.pathname.split('/').pop(); 
相关问题