Как добавить класс, не избавляя его от других? - PullRequest
1 голос
/ 11 января 2011

В моем нижнем колонтитуле настроен следующий код, добавляющий класс 'day' в указанное время.

function setTimeStyles() {
    var currentTime = new Date().getHours();
    if(currentTime > 5 && currentTime < 17) {
    document.body.className = 'day';
    }
}

$(document).ready(function() {
    setTimeStyles();
});

Проблема в том, что когда класс добавляется, он избавляется от других классов, которые уже существуют. Например, без добавления класса 'day' мой тег body будет:

<body class="home">

Но когда добавлен дневной класс, мой тег тела превращается в:

<body class="day">

Мне бы хотелось, чтобы класс «день» был добавлен к тому, что уже там, вот так:

<body class="home day">

Как я могу это сделать?

Ответы [ 3 ]

2 голосов
/ 11 января 2011

В jQuery вы можете сделать

$("body").addClass("day");
1 голос
/ 11 января 2011

Вы пытались заменить

document.body.className = 'day'; 

на

document.body.className = document.body.className + ' day';
0 голосов
/ 11 января 2011

Я не знаю, как jquery добавляет класс, но вы можете быть уверены, что он добавлен (или перемещен) в конец любого существующего списка, давая ему приоритет в любых коллизиях.

function addClass(node, cname){
 var C= node.className.split(/\s+/), L= C.length;
 while(L){
  if(C[--L]=== cname) delete C[L];
 }
 C.push(cname);
 node.className= C.join(' ').replace(/ {2,}/g,' ');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...