可能重复:
Manipulating CSS :before and :after pseudo-elements using jQuery使用`.css`为伪元素
我想对jQuery相当于这个CSS代码:
p:before {
content: 'Intro!';
}
我天真地试过$('p:before').css('content', 'Intro!');
但它不起作用。
我该如何使用jQuery做伪元素CSS修改?
可能重复:
Manipulating CSS :before and :after pseudo-elements using jQuery使用`.css`为伪元素
我想对jQuery相当于这个CSS代码:
p:before {
content: 'Intro!';
}
我天真地试过$('p:before').css('content', 'Intro!');
但它不起作用。
我该如何使用jQuery做伪元素CSS修改?
你不能。
1)选择器p:before
不仅仅是一个选择器 - psuedo元素定义了不影响实际选择的功能。什么是jQuery应该返回,所有p
标签?这一切都是$(...)
呢 - 它会返回一堆匹配您选择器的元素。 jQuery(Sizzle/querySelectorAll
)不知道如何获取:before
...
2)Psuedo-element/class行为无法通过JS API提供。
做这样的事情,唯一的方法,通过动态JS,将创建一个<style>
元素,像这样:
$('<style>p:before{content:"intro";}</style>').appendTo('head');
请问你为什么要这样做摆在首位?
伪**元素**!不要让这两个混在一起。 – BoltClock
@BoltClock,谢谢,编辑:) – James
我想要这个的原因是有一个特定的元素上的覆盖,随着时间的推移该特定元素的变化。请参阅[this](http://stackoverflow.com/questions/7731523/doing-overlays-without-an-empty-div)问题。 – Randomblue
你可以这样做:
$(document).append($("<style>p:before{ content: 'Intro!' } </style>"));
Yuck!请不要嵌入'style'。 – Randomblue
@Randomblue:内联样式表=/=内联样式。 – Blazemonger
这篇文章没有真正提供答案... – Randomblue
@Randomblue:“你不能用jQuery修改伪元素”而不是答案? – BoltClock
@Sotiris:我不想操纵CSS *元素*本身,只是改变一个CSS *属性*。 – Randomblue