2009-12-24 53 views
0

我需要根据用户所在的页面动态更改每个页面的样式。Jquery - 从当前URL中取文本

要做到这一点,我打算采取被访问的网页的URL,剥离一些零碎,然后申请然后应用rresult到<body>标签。这将允许我根据页面的名称进行样式设置。

我的URL看起来像:

http://dan.manfredman.net/site/user/location/home.php 
http://dan.manfredman.net/site/user/location/profile.php 
http://dan.manfredman.net/site/user/location/users.php 

我只需要“家”,“个人资料”,“用户”,我怎么能使用jQuery从文件名称中删除.php然后再根据访问的页面将剩余的“家庭”,“个人资料”,“用户”应用于身体标记?

+0

我知道使用这种方法的缺陷,但是这是按照预期和用户要求工作的。 – CLiown 2009-12-24 10:49:55

回答

0
$(document).ready(function() { 
    var pathname = window.location.pathname; 
    var pathname_no_php = pathname.replace(/\.php$/i, ""); 
    // => http://dan.manfredman.net/site/user/location/users 

    var pathname_splitted = pathname_no_php.split("/")._reverse()[0] 
    // => 'users' 

    $("body").attr("id", pathname_splitted); 
}); 
+0

谢谢,我正在寻找解决方案。 – CLiown 2009-12-24 10:49:23

1

你不需要的jQuery为,只要使用普通的JavaScript:

var url = document.location.href; 
    var name = url.substring(
        url.lastIndexOf("/")+1 
       , url.lastIndexOf(".") 
       ); 
+0

但是您必须使用url.lastIndexOf(“。php”)而不是“.html” – 2009-12-24 10:19:27

3

你可能会更好,在服务器端做这个,通过应用不同的CSS文件,这取决于页你是在。

根据您正在开发的平台 - PHP,Java,ASP.NET等 - 会有不同的方式来实现这一点。

无论客户端是否启用javascript,服务器端方法都可以使用。

编辑:我看到你有php文件扩展名,所以我猜你正在为PHP开发 - RTFP,鲍勃!

+0

+ 1-这是处理此IMO更好的方法 – 2009-12-24 10:22:59

0

为什么没有div并使用jquery更改类,并且css会自动跟随。你可以隐藏一些使用CSS的部分,如果你不想显示其他人。 更改整个页面可能会导致用户注意到菜单较早出现并消失。

0
var pathname = document.location.pathname; 
var name = pathname.substring(pathname.lastIndexOf("/")+1, pathname.lastIndexOf("."));