我有这段代码来解析网址并在我的HTML网页的<body>
标记中添加一个类。
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");
}
我遇到的问题是它删除了现有的身体类。相反,我想附加到存在的任何体类而不是覆盖。
答案 0 :(得分:5)
使用此:
$("body").addClass(newClass);
而不是
$("body").attr("class",newClass);
这是一个setter:$("body").attr("class",newClass);
,它将类设置为newClass并且不会附加它。
答案 1 :(得分: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/
答案 2 :(得分:2)
.attr("class", newClass)
正在删除所有现有的类。您应该使用.addClass()
代替:
$("body").addClass(newClass);
此外,由于您刚刚将一个类添加到body
,因此以下代码将始终为false:
if ( $("body").attr("class") == "") { }
答案 3 :(得分:2)
使用addClass函数 - http://api.jquery.com/addClass/