jsdom和jquery修改dom元素的css样式

时间:2012-11-27 18:58:31

标签: jquery node.js jsdom

我一直在使用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";
            });

我尝试使用我能想到的各种方式将一些样式(背景颜色为绿色)添加到html页面上的div。以上所有尝试(我也逐一尝试过,看看它们是否独立工作)产生了相同的结果,相当于:<div id="somedivid" style="">

我想知道这是不是一个bug,因为它不会写任何样式(在引号内总是空的),但如果你检查原始文档,这些div之前没有一个样式属性。在自定义css样式块中手动创建我在页面顶部手动创建的类sel,但是,它的工作方式与您认为应该完全一样。问题是我真的希望能够在使用jsdom时动态地改变单个对象的样式。如果这是一个错误或者我忽略了什么,任何人都有任何想法吗?

顺便说一句,这段代码在普通的浏览器中运行,正如预期的那样运行标准的jquery,所以看起来很可能是某种方式的jsdom实现。

1 个答案:

答案 0 :(得分:0)

你错过了一种方法......也许这个方法有效:

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

或:

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

后者如果先前已定义'sel'类。

如果它有效,则可能意味着'jsdom'不是序列化当前计算的样式而只是解析样式(在HTML标记中)。我相信这是预期的行为。