有没有办法使用jQuery 选择/处理CSS伪元素,例如::before和::after(以及带有分号的旧版本)?
例如,我的样式表具有以下规则:
.span::after{ content:'foo' }
如何使用jQuery将'foo'更改为'bar'?
有没有办法使用jQuery 选择/处理CSS伪元素,例如::before和::after(以及带有分号的旧版本)?
例如,我的样式表具有以下规则:
.span::after{ content:'foo' }
如何使用jQuery将'foo'更改为'bar'?
尽管它们是通过浏览器通过CSS呈现的,就像它们与其他真实DOM元素一样,但伪元素本身并不属于DOM,因为顾名思义,伪元素不是真实元素,因此您不能直接使用jQuery(或与此相关的任何 JavaScript API,甚至不是Selectors API)来选择和操作它们。这适用于您要通过脚本修改其样式的所有伪元素,而不仅仅是::beforeand ::after。
您只能在运行时通过CSSOM(think window.getComputedStyle())直接访问伪元素样式,而jQuery以外的CSSOM 不会公开该样式.css(),该方法也不支持伪元素。
但是,您始终可以找到其他解决方法,例如:
将样式应用于一个或多个任意类的伪元素,然后在类之间进行切换(有关快速示例,请参见seucolega的答案)—这是惯用的方式,因为它使用了简单的选择器(伪元素不是)区分元素和元素状态,以及它们的预期使用方式
通过更改文档样式表来操纵应用于所述伪元素的样式,这更像是骇客
I made use of variables defined in
:rootinsideCSSto modify the:after(the same applies to:before) pseudo-element, in particular to change thebackground-colorvalue for a styledanchordefined by.sliding-middle-out:hover:afterand thecontentvalue for anotheranchor(#reference) in the following demo that generates random colors by using JavaScript/jQuery:HTML
CSS
JS/jQuery