jQuery插件/ JavaScript:使用实际URL设置body-class

时间:2010-10-31 19:42:14

标签: javascript jquery

我知道JavaScripts或jQuery插件设置了一些正文类(例如<body class="ff3.5 ff win gecko some-awesome-icons-article-with-100-icons">之类的东西) 我不知道怎么叫...? 你知道我的意思吗,你有它的链接/名字吗? 设置为css-body-class的文章的路径对我来说比对浏览器或操作系统更重要。

3 个答案:

答案 0 :(得分:2)

我认为你要求的代码将提取url路径的“filename”部分,并将其设置为body元素的类名。

如果是这样,那么这是基本的想法:

$(document).ready(function() {

    var parts = window.location.pathname.split('/');

    var basename = "default-no-basename";
    if( parts && parts.length ) {
        var idx = parts.length-1;
        if( parts[idx] == '' && parts.length > 1 ) {
            --idx;
        }
        basename = parts[idx];
    }
    //alert("basename: "+basename);
    $(body).addClass( basename );
});

该代码只是在最后一个斜杠后面提取页面url的一部分,并将其写入body标签的class属性中。如果url路径是“目录”(即它以斜杠结尾),那么它将使用尾随目录名称。如果网址路径只是'/',则默认添加类名'default-no-basename'

重要提示:以上代码不会做任何事情以确保类名符合css类名中允许的字符。因此,如果您的网址类似于:http://example.com/abc/my-cool-page(with stuff).html,那么您将遇到问题,因为css类将设置为"my-cool-page(with stuff).html"

因此,您要确保永远不会在具有特殊字符的页面上调用此字符(例如().和[空格]字符上面的例子)。或者你想要在这个逻辑中添加一些检查以去除不允许的字符。

祝你好运。

答案 1 :(得分:1)

如果我理解了您的查询,则需要为某个标记添加一个类。使用jquery就是这样做的。

$('body').addClass('anyClass');

答案 2 :(得分:0)