2012-11-27 45 views
1

我一直在使用JDOM和jQuery跟我的node.js服务器,并观察下面的代码如下奇怪的行为DOM元素的jQuery的修改CSS样式:jsdom和

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="">

我不知道这是不是一个错误,因为它不会写任何样式(总是在引号内为空),但如果您检查原始文档,则在这些div没有之前添加样式属性。然而,我在自定义CSS样式块的页面顶部添加了我手动创建的class sel但是,完全像您认为的那样。问题是,我真的希望能够在使用jsdom的同时动态更改单个对象的样式。任何人有任何想法,如果这是一个错误,或者如果我忽略了一些东西?

顺便说一句,这段代码在运行标准jquery的普通浏览器中工作,就像预期的一样,所以它似乎可能是jsdom的实现。

回答

0

你错过了做这件事...也许这一个工程:

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

或:

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

如果 'SEL' 类先前已经被定义了后者。

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