jsdom и jquery, изменяющие стиль css элементов dom

Я использовал jdom и jquery с моим сервером node.js и наблюдал следующее странное поведение со следующим кодом:

var divs = window.$('div').each(function() {
              //console.log(" -", $(this));
              $(this).css('background-color','green');
              $(this).addClass('sel');
              this.style.backgroundColor = "green";
            });

Я пытался добавить какой-то стиль (зеленый цвет фона) к элементам div на html-странице, используя все возможные способы. Все вышеперечисленные попытки (я также пробовал их одну за другой, чтобы увидеть, работает ли какая-либо из них независимо) дали одинаковые результаты, эквивалентные: <div id="somedivid" style="">

Интересно, является ли это ошибкой, поскольку он не записывает в него какой-либо стиль (всегда пустой внутри кавычек), но добавляет атрибут стиля, когда у этих div не было его раньше, если вы проверите исходный документ. Однако добавление класса sel, который я создал вручную, вверху страницы в пользовательском блоке стиля css, работает именно так, как вы думаете. Проблема в том, что я действительно хочу иметь возможность динамически изменять стиль отдельных объектов при использовании jsdom. У кого-нибудь есть идеи, это ошибка или я что-то упустил?

Кстати, этот код работает в обычном браузере, работающем со стандартным jquery, как и ожидалось, так что, похоже, это каким-то образом реализация jsdom.


person BryanP    schedule 27.11.2012    source источник


Ответы (1)


Вы пропустили один способ сделать это... возможно, этот работает:

this.setAttribute('style', 'background-color: green;');

or:

this.setAttribute('class', 'sel');

последнее, если класс 'sel' был определен ранее.

Если это работает, это может означать, что «jsdom» не сериализует текущий вычисляемый стиль, а просто анализирует стиль (в разметке HTML). Я считаю, что это ожидаемое поведение.

person Diego Perini    schedule 29.11.2012