2009-11-14 69 views
2

我在我的asp.net mvc(C#)應用程序中從數據庫動態加載樣式。如何使用jQuery獲取嵌入式樣式的css

我試圖改變加載的內聯樣式的一些屬性(背景,字體顏色,字體大小等)。我正在使用jquery.rule來做到這一點。

我需要使用jquery將包含更改的完整內聯樣式更新回數據庫。

頭內的內嵌樣式看起來像:

<style type="text/css"> 
    <! 
    -- body 
    { 
     background: #fff; 
     margin: 0px; 
     padding: 0px; 
     font: normal 12px Tahoma, Verdana, Arial; 
     color: #636363; 
    } 
    a 
    { 
     color: #d0d0d0; 
     text-decoration: none; 
    } 
    #header 
    { 
     padding-left: 35px; 
     height: 60px; 
     vertical-align: middle; 
     padding-top: 25px; 
    } 
    -- ></style> 

我需要更新的內聯樣式。怎麼做?

回答

2

我需要使用jquery將包含更改的完整內聯樣式更新回數據庫。

您是否試圖讀取頁面中元素的內聯樣式聲明?如果是這樣,這是棘手的。理論上你應該可以調用element.getAttribute('style')或jQuery等價物。然而,DOM屬性訪問在IE中不起作用;實際上IE並沒有存儲文檔中所使用的屬性,而只存儲了它所產生的已解析的樣式聲明。

沒有一種閱讀所有樣式的特定於jQuery的方式,但是您可以使用DOM Level 2 Style作爲CSS獲得有效的內聯樣式規則。

var style= element.style.cssText; 

但在IE瀏覽器,這將分離所使用的任何快捷方式的屬性,例如設置border可能會導致你得到border-styleborder-colorborder-width回。 IE也會大寫屬性名稱。這對你來說可能並不重要。

您可能會更好地記住您在單獨的查找對象中進行的內聯樣式更改,以便您可以更輕鬆地閱讀它。您可以使用jQuery的data()方法將其附加到元素,對「真實」element.style和查找$(element).data('stylestore')對象進行所有更改,然後在您要發佈時從查找中檢索所有集樣式。

+0

$('#elementid').css('font','arial')改變類和 $('#elementid')。css 'font')來獲取類值 – Mark 2009-11-14 12:45:32

+0

我需要獲取頁面的更新內聯樣式。我用示例內聯樣式更新了我的問題 – Prasad 2009-11-14 13:19:58

+0

哦,您的意思是內部**樣式表**,而不是內聯'樣式'屬性?使用'$('style')規則插件。cssText()'(用合適的選擇器替換''style''來選擇你的樣式表,如果你一直在使用的話)。 – bobince 2009-11-14 14:09:51

-1

使用jQuery的AJAX方法形式的序列化的數據發佈到你的操作方法:

$.ajax({ 
    type: "POST", 
    url: "/YourController/UpdateCss", 
    data: "font=arial&color=#fff&font-size=10px" 
    success: function(result){ 
     // handle your result here 
    } 
}); 

然後,您可以通過「的FormCollection」訪問你的控制器動作發佈數據:

[AcceptVerbs(HttpVerbs.Post)] 
public String UpdateCss(FormCollection form) 
{ 
    // handle your form here 
    return "Success"; 
} 

希望這有幫助

-Mark

+0

我想你不能建立一個返回類型的行動字符串 – eKek0 2009-11-14 12:22:17

+0

爲什麼你會返回一個AJAX請求的ActionResult?你會最lilely返回布爾,JSON,字符串等等...... – Mark 2009-11-14 12:47:21