2

<body>URLを解析し、HTMLページのタグにクラスを追加するためのこのコードスニペットがあります。

var pathname = window.location.pathname;
var pathSlashesReplaced = pathname.replace(/\//g, " ");
var pathSlashesReplacedNoFirstDash = pathSlashesReplaced.replace(" ","");
var newClass = pathSlashesReplacedNoFirstDash.replace(/(\.[\s\S]+)/ig, "");

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

私が抱えている問題は、すでにそこにある既存のボディクラスを削除することです。代わりに、存在するボディクラスに追加し、上書きしないようにします。

4

4 に答える 4

5

これを使って:

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

それ以外の

$("body").attr("class",newClass);

これはセッターです。$("body").attr("class",newClass);クラスを newClass に設定し、追加しません。

于 2011-11-09T20:53:17.143 に答える
4

addClassの代わりに使用しattr('class', newClass)ます。はaddClass空白で区切られたクラス名のリストも受け入れ、それらを正しく追加します。

$("body").addClass(newClass);
if ( $("body").attr("class") == "") // Makes no sense, since you have previously 
{                                   // added `newClass`
    $("body").addClass("class");
}

のドキュメントについては、 http://api.jquery.com/addClass/addClassを参照してください。

于 2011-11-09T20:53:29.427 に答える
2

.attr("class", newClass)既存のクラスをすべて削除しています。.addClass()代わりに使用する必要があります:

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

さらに、 にクラスを追加したばかりなので、body以下のコードは常に false になります。

if ( $("body").attr("class") == "") { }
于 2011-11-09T20:54:05.387 に答える
2

代わりに addClass 関数を使用してください - http://api.jquery.com/addClass/

于 2011-11-09T20:54:28.670 に答える