如果你要设计一个< input>使用Javascript的元素,看起来您以这种方式设置的任何属性都会在:焦点规则中被忽略。
我有example说明了这一点:
我有一个:textarea和输入的焦点规则,为背景黄色着色,因此很明显文本字段具有焦点。
但这对输入元素不起作用,似乎是因为我以编程方式设置了这些属性。如果我没有设置它们,那么:焦点按预期工作。如果:焦点规则设置的属性未在.css()
中设置,那么它们就会受到尊重。
在Safari,Firefox,Chrome和IE上都是如此,所以很明显是“预期行为”,但我在网上找不到任何说明(为什么)这是正确的。
显然我可以实现我想要的using blur and focus handlers,但我试图理解为什么会这样。
答案 0 :(得分:3)
如果直接设置元素的样式,那么与使用HTML style
属性相同。它来自the cascade中的任何选择器。
通常,为了处理CSS与JavaScript的良好变化,您需要提前准备样式表(作为正确的样式表),然后更改元素以匹配新的选择器(通常通过修改其类列表)。
答案 1 :(得分:2)
这与特异性有关,it is documented与W3C有关,特别是
特异性有四个组成部分;我们称他们为a,b,c和d。组分“a”是最有区别的,“d”是最小的。
- 组件“a”非常简单:样式属性中的声明为1,否则为0。
由于.css
直接更新style
属性,因此它的特异性高于样式表中的任何内容。您可以使用!important
去提供更高的重要性(其优先级高于特异性),但更好的选择是使用类(.addClass
)而不是改变样式属性直接。