1

我有一个获取 URL 路径并将其添加为正文类的 JQuery 函数:

var pathname = window.location.pathname;
var pathSlashesReplaced = pathname.replace(/\//g, " ");
var pathSlashesReplacedNoFirstDash = pathSlashesReplaced.replace(" ","");
var newClass = pathSlashesReplacedNoFirstDash.replace(/\(\d*\)/g, '').replace(/\s/, '-');

    $("body").addClass(newClass);
    if ( $("body").attr("class") == "") 
    {   

        $("body").addClass("class");

    }

.. 因此,如果 url 类似于 /myapp/user/list,则正文类最终为:

<body class="myapp-user list">

问题是我希望所有三个单词都带有破折号,所以应该是:

<body class="myapp-user-list">

..然后我可以使用CSS主题:

.myapp-user-list {

}

我很确定我的 RegEx 存在问题,但我不知道在哪里。我尝试了各种文本函数,但问题是它从页面中抓取了所有文本并将其作为正文类放入:

var text = $(this).text();
var newClass  = $.trim(text.replace(/\(\d*\)/g, '').toLowerCase()).replace(/\s/, '-');
4

3 回答 3

2

尝试 :

var newClass = location.pathname.split('/').join('-').replace(/(^-|-$)/g,''),
    $body = $("body").addClass(newClass);

if ($body.attr("class") == "") {   
    $body.addClass("class");
}

我会避免类名class。它可能会带来问题。

于 2012-05-22T01:27:45.363 回答
1

尝试将g修饰符添加到第二个替换以替换所有空格,而不仅仅是第一个。

var newClass = pathSlashesReplacedNoFirstDash.replace(/\(\d*\)/g, '').replace(/\s/g, '-');
于 2012-05-22T01:23:25.240 回答
0

我认为应用这两个正则表达式就可以了。

"/\//-/g"   Will change all slashes to -
"/-//"      Will only remove the first - 
于 2012-05-22T01:31:32.243 回答