2

我有这段代码来解析 URL 并向<body>我的 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);

这是一个 setter:$("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");
}

有关 的文档addClass,请参阅http://api.jquery.com/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 回答