【发布时间】:2016-02-05 17:44:47
【问题描述】:
是否可以以某种方式参数化 jQuery addClass() 方法?
比如,有一个在调用addClass() 方法时设置颜色属性的css 类?
我希望这是有道理的,因为我对 JavaScript 和 CSS 还很陌生。如果它很重要,我正在扩展 MediaWiki VisualEditor。该方法用于立即显示/渲染在编辑器中所做的更改。但是我找不到需要参数化的示例。
如果不可能,我很想知道该怎么做。
如果不是,也许有人可以建议如何以另一种方式实现我想要的东西?
编辑:
这是当前状态: 当我在文本中添加一些注释时,比如说一个语言注释,这被称为:
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-language注解:
.ve-ce-languageAnnotation {
border-bottom: 1px dashed #ccc;
background-color: #ebf3f5;
}
这是 ve-ce-bidi-isolate:
.ve-ce-bidi-isolate {
unicode-bidi: isolate;
unicode-bidi: -moz-isolate;
unicode-bidi: -webkit-isolate;
}
我将此解释为prop() 函数设置了某种参数。所以这就是我为我的 textColor 注释尝试的:
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,我想要的是不可能的 - 但我可以通过使用 this.$element.css('attr', 'value') 直接应用属性而不使用类。我想我可以用它来满足我的需要。
【问题讨论】:
-
你能告诉我们你到目前为止尝试了什么吗?
-
你的意思是在调用 addClass 时总是添加所说的类?
-
比如,有一个带有 color 属性的 css 类,该属性是在调用 addClass() 方法时设置的? 这是
addClass()、.removeClass()的主要目标,和.toggleClass()。只需将一个类当作一个状态(即开、关、高、低、显示、隐藏等...) -
@Gerwin 我用更多信息编辑了我的问题。 GMchris 我想在调用 addClass 时总是添加颜色,但颜色可能会有所不同,所以我想要 setColor(String color) 之类的东西。如果这样的事情是可能的。
-
我有 5 年以上的 CSS 和 JS 经验,但我完全不明白这个问题,您能否考虑编辑它以获得更好的解释?也许添加一个伪示例,或者其他语言的示例
标签: javascript jquery html css