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クラスは次のようになります。

<body class="myapp-user list">

問題は、3つの単語すべてにダッシュを付けたいので、次のようにする必要があります。

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

..そして、CSSを使用してテーマを設定できます。

.myapp-user-list {

}

正規表現に問題があると確信していますが、どこに問題があるのか​​わかりません。さまざまなテキスト関数を試しましたが、問題は、ページからすべてのテキストを取得し、それをbodyクラスとして配置することでした。

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最初の空白だけでなく、すべての空白を置き換えるために、2 番目の置換に修飾子を追加してみてください。

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

これらの2つの正規表現を適用することでうまくいくと思います。

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