JQuery, чтобы добавить <body>класс, нужно немного больше помощи - PullRequest
2 голосов
/ 10 ноября 2011

У меня есть этот фрагмент кода для анализа 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 ]

5 голосов
/ 10 ноября 2011

Используйте это:

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

вместо

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

Это установщик: $("body").attr("class",newClass);, который устанавливает класс в newClass и не добавляет его.

4 голосов
/ 10 ноября 2011

Используйте 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 голосов
/ 10 ноября 2011

Используйте вместо этого функцию addClass - http://api.jquery.com/addClass/

2 голосов
/ 10 ноября 2011

.attr("class", newClass) удаляет все существующие классы.Вместо этого следует использовать .addClass():

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

Кроме того, поскольку вы только что добавили класс в body, приведенный ниже код всегда будет ложным:

if ( $("body").attr("class") == "") { }
...