JQuery添加类,需要更多帮助

时间:2011-11-09 20:50:37

标签: javascript jquery theming

我有这段代码来解析网址并在我的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");
}

我遇到的问题是它删除了现有的身体类。相反,我想附加到存在的任何体类而不是覆盖。

4 个答案:

答案 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/