2016-02-05 39 views
1

是否有可能參數化jQuery addClass()方法? 像,有一個顏色屬性的css類,當addClass()方法被調用時設置?參數化jQuery addClass?

我希望是有道理的,因爲我很新JavaScriptCSS。如果這很重要,我正致力於擴展MediaWiki VisualEditor的。這種方法用於立即顯示/渲染編輯器中所做的更改。但是我找不到需要參數化的例子。

如果這是不可能的,我很想知道如何去做。

如果不是,也許有人可以建議如何實現我想要的另一種方式?

編輯:

這就是當前的狀態: 當我加入一些註釋文字,比方說,一個languageAnnotation,這就是所謂的:

this.$element 
    .addClass('ve-ce-languageAnnotation') 
    .addClass('ve-ce-bidi-isolate') 
    .prop({ 
     lang: this.model.getAttribute('lang'), 
     dir: this.model.getAttribute('dir'), 
     title: this.constructor.static.getDescription(this.model) 
    }); 

這是VE-CE-languageAnnotation:

.ve-ce-languageAnnotation { 
border-bottom: 1px dashed #ccc; 
background-color: #ebf3f5; 
} 

這是VE-CE-比迪 - 分離株:

.ve-ce-bidi-isolate { 
unicode-bidi: isolate; 
unicode-bidi: -moz-isolate; 
unicode-bidi: -webkit-isolate; 
} 

我把它解釋爲prop()函數設置某種參數。因此,這是我想爲我的文字顏色標註:

 this.$element 
    .addClass('ve-ce-textColorAnnotation') 
    .prop({ 
     color: this.model.getAttribute('style'), 
     title: this.constructor.static.getDescription(this.model) 
    }) 
    ; 

隨着VE-CE-TextColorAnnotation:

.ve-ce-textColorAnnotation { 
    color: red; 
} 

這總是產生紅色。當我嘗試輸入其他東西然後是合法的顏色時,沒有任何反應。

Edit2:我想一個選擇是爲每種可能的顏色創建一個類,並根據參數添加正確的類?像這樣:

var color = this.model.getAttribute('style'); 
if (color == 'blue') { 
    this.$element.addClass('blueText') 
} else if (... 

但這看起來不是個好主意。

編輯3:According to the top answer in this question,我想要的是不可能的 - 但我可以直接應用一個屬性,而不使用類,通過使用這個$ element.css('attr','value')。我想我可以用它來滿足我需要的東西。

+0

你能告訴我們你到目前爲止所嘗試過的嗎? – Gerwin

+0

你的意思是總是添加所說的類,當addClass被調用? – GMchris

+2

*喜歡,在調用addClass()方法時設置一個具有color屬性的css類?*這是'addClass()','.removeClass()'和'.toggleClass()'的主要目標。 。只要把課堂當成一個國家(即開,關,高,低,顯示,隱藏等等) – zer00ne

回答

1

看來你只是想設置一種顏色,而不是添加一個類。 HTML中的類可以用於程式化或DOM導航,但是在您的情況下,您只需要爲元素應用不同的顏色。你不需要使用類,特別是如果顏色是動態的。

你想要做的就是調用jquery的.css()方法。它可以與一個參數一起使用,如下所示:

element.css({ 
    'color': 'black', 
    'height': '100px' 
}); 

或幾個,如果你只是希望編輯單個屬性:

element.css('color', 'black'); 

沒有使用jQuery,你也可以這樣做:

element.style.color = 'black'; 
+0

應該是'('color','black')' –

+0

你是對的。修復。 – GMchris

1

你能用簡單的方法做什麼。假設你有一個從你選擇顏色的下拉菜單。在選項的value屬性中,您有藍色的藍色文字,紅色的紅色文字等等。

然後在代碼中,您可以獲得該值。你可以看到here如何獲取值,然後你有像CSS,藍色文字等CSS類。 當該選項的用戶點擊您捕捉事件,做的代碼這個簡單的PICE:

this.$element.addClass('text that you got from value attribute') 

當然你可以去除類你做的添加之前。

+0

這將要求我爲每種顏色設置一個班級,對吧?這聽起來不像是很好的風格。是否可以應用一個屬性而不使用類?我已閱讀了關於jQuery .attr()方法的一些內容,但無法使其工作(甚至沒有參數)。 –

+0

你只需要改變文本的顏色?那麼是的,你可以使用類似yourItem.style.color =「你的新課程」。或者你可以用attr來嘗試;) – Radu