2016-02-05 40 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