【发布时间】:2013-10-25 15:34:13
【问题描述】:
这是我的代码:
var showThis = $(this).attr('id'); // div0, div1, div2 etc.
$('#' + showThis).attr('style', 'background-color: #063 !important, height: 520px');
我需要更改背景颜色、宽度和高度
#showThis
使用上面使用的方法,因为我无法添加或切换类(如果我将类添加到#showThis,它会破坏我的其余代码)。现在我上面的作品,然而,它只会改变背景颜色的高度。我也需要改变宽度。当我添加
width: 20px
像这样
最后,由于某种原因它不起作用。它停止改变宽度和高度,改变背景颜色。它没有给出任何 javascript 错误,因此代码有效并且行确实执行,因为它确实改变了背景颜色,但它为什么不改变宽度和高度而只改变两者之一?
注意:我需要使用 !important 标签(所以我认为 .css 代替 .attr 不起作用),如果有帮助,我正在使用 I.E 8 和 CSS(不是 css3)。
【问题讨论】:
-
要通过 jQuery 更改 CSS 属性,您应该使用
$('#' + showThis).css({'background-color': '#063', 'height': '520px'})等。在我看来,使用预定义样式切换类会容易得多。 -
也许我遗漏了一些上下文,但
$(this)和$('#' + $(this).attr('id'))应该选择相同的元素,不是吗? -
这在 jQuery 文档中有记录。 @JasonP你是对的。那里有代码冗余。
-
@Chad 对,但我需要有 !important 标签。当我使用 .css 使用 !important 标记时,它不起作用。
-
@user2719875 在这种情况下,我会选择类切换选项。 jsfiddle.net/3G6FT
标签: javascript jquery css attr