2012-11-27 65 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標記中)。我相信這是預期的行爲。