有没有办法使用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)来选择和操作它们。这适用于您要通过脚本修改其样式的所有伪元素,而不仅仅是::before
and ::after
。
您只能在运行时通过CSSOM(think window.getComputedStyle()
)直接访问伪元素样式,而jQuery以外的CSSOM 不会公开该样式.css()
,该方法也不支持伪元素。
但是,您始终可以找到其他解决方法,例如:
将样式应用于一个或多个任意类的伪元素,然后在类之间进行切换(有关快速示例,请参见seucolega的答案)—这是惯用的方式,因为它使用了简单的选择器(伪元素不是)区分元素和元素状态,以及它们的预期使用方式
通过更改文档样式表来操纵应用于所述伪元素的样式,这更像是骇客
I made use of variables defined in
:root
insideCSS
to modify the:after
(the same applies to:before
) pseudo-element, in particular to change thebackground-color
value for a styledanchor
defined by.sliding-middle-out:hover:after
and thecontent
value for anotheranchor
(#reference
) in the following demo that generates random colors by using JavaScript/jQuery:HTML
CSS
JS/jQuery