2013-10-18 102 views
0

我有一些JavaScript代碼可將元素上的所有樣式轉換爲內聯樣式。原因是這樣的代碼可以導出爲電子郵件,並希望不會因電子郵件發送而中斷。將無法​​識別的樣式添加到內聯元素

雖然代碼在頁面上,我還試圖添加一些額外的電子郵件特定樣式,即mso-line-height-rule: exactly;because of a problem I'm having

但是,如果我使用.css('mso-line-height-rule', 'exactly')設置它,它不會這樣做。我只能假設這是因爲瀏覽器無法將其識別爲有效的CSS樣式。有任何想法嗎?

Fiddle和示例代碼:

<article> 
    <div></div> 
</article> 

JS

$('div').css({ 
    // Works 
    'background-color': 'red', 

    // Doesn't work 
    'mso-inline-height': 'exactly' 
}); 

alert($('article').html()); 
+0

正如您所說,這是因爲'mso-line-height-rule'不是有效的CSS屬性。這與'.css('frapple','schmoo')'不起作用的原因是一樣的。 – j08691

回答

0

試試這個:

$('div').css({ 
// Works 
'background-color': 'red', 

// Doesn't work 
'mso-inline-height': 'exactly' 
}); 
//Grab any styles that were set with the css method 
var style = $('div').attr('style'); 
//Append the non-standard MS Word bunk 
$('div').attr('style', style + 'mso-inline-height:exactly;'); 
alert($('article').html()); 

http://jsfiddle.net/HDQpW/1/

它使雪橇格哈默爾,但它應該做的伎倆。

+0

完美!我的大錘遲遲沒有看到太多的用途,所以我很樂意在這個場合把它吹掉。 – Chris

0

使用屬性attr()選擇器而不是css將解決您的直接問題。

$("div").attr("style", "background-color: red; mso-inline-height: exactly");