使用jQuery删除内联样式时,原始样式表设置将被忽略

时间:2018-09-20 12:13:28

标签: jquery css

我有一个样式表,其中设置了一些样式。

其中一种样式的位置设置为“固定”-但仅适用于某些组合。

例如,

.mystyle.blue {
    position: fixed;
}  

因此,.blue是固定的,但是普通的.mystyle本身不会获得相同的样式。

我也有一些jQuery的东西,它添加和删除了内联样式。因此,在某些情况下,可能会将position: fixed添加到所有.mystyle变体中。

只需使用以下方法即可完成

$(".mystyle").css("position", "fixed")添加;

$(".mystyle").removeAttr("style");删除。

但是,一旦删除,则将忽略基础样式表设置。因此,我仍然希望.mystyle.blue兑现position: fixed,但事实并非如此。

有任何解决方法的想法吗?

更新

我现在知道发生了什么,并已解决问题,但这不是我期望的。

使用jQuery设置position: fixed时,我还设置了顶部位置。这是负数--64px(尽管实际上是动态设置的)。显然,两者都是同时删除的。

样式表代码是这样的:

position: fixed;
top: 0;

我认为,一旦删除了内联样式样式,一种样式便会再次生效-一种可以,一种不会。

负的最高排名似乎没有恢复为0。这可能只是我的理解不深。该位置确实恢复为默认值。

如果我在top: 0!important上添加了重要标签,它将起作用。

1 个答案:

答案 0 :(得分:0)

没有.mystyle变体这样的东西。 .mystyle.blue是一个复合CSS选择器,将规则应用于同时具有myStyleblue类的任何元素,而它们同时具有。如果删除其中任何一个,该规则将不再适用。

$(".mystyle").css("position", "fixed")

在页面中当前具有position:fixed;类的任何元素的style属性的mystyle属性内添加mystyle。请注意,myStyle!important不同类。 CSS选择器区分大小写!

任何内联样式规则都比通过CSS规则应用的类具有更高的特异性,除非样式表规则以$(".mystyle").removeAttr("style"); 后缀(您不应该使用,它是蠕虫的罐头!)。

style

将完全删除position:fixed;属性,而不仅仅是您添加的style。如果对以前具有position属性的元素执行此操作,则在再次隐藏并显示该元素后,这些规则将丢失。最好将static属性恢复为默认值$('.mystyle').css({position:'static'})

python3 --version