javascript - jQuery 插件/JavaScript : Set body-class with actual URL

标签 javascript jquery

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

最佳答案

我认为您要求的代码将提取 url 路径的“文件名”部分,并将其设置为 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 路径是一个“目录”(即以斜杠结尾),那么它将使用尾随目录名称。如果 url 路径只是“/”,那么它将默认添加类名 'default-no-basename'

重要提示:上面的代码没有执行任何操作来确保类名符合 css 类名中允许的字符。因此,如果您的网址类似于:http://example.com/abc/my-cool-page(with stuff).html,那么您将会遇到问题,因为 css 类将设置为“my-cool-page(with stuff).html”

因此,您需要确保永远不会在具有特殊字符(例如 (, ), . 的页面上调用此函数。,以及上例中的 [空格] 字符)。或者您需要向该逻辑添加一些检查以删除不允许的字符。

祝你好运。

关于javascript - jQuery 插件/JavaScript : Set body-class with actual URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4064781/

相关文章:

javascript - 换行符未在 HTML 中呈现

javascript - 遍历我的表格,我怎么知道复选框是否被选中?

javascript - 如何按间隔显示数组索引中的值

javascript - 函数中的 if-else 语句如何工作?

Objective C 的 Javascript 语法荧光笔

javascript - 如何让vuejs点击事件同步

javascript - Fancytree 以编程方式触发加载

javascript - 如何加载多个文件图像作为数据 url 并在之后单独更改它们

PHP echo 覆盖之前的 echo

具有多个文件的 Javascript 项目