2011-10-11 127 views
3

可能重复:
Manipulating CSS :before and :after pseudo-elements using jQuery使用`.css`为伪元素

我想对jQuery相当于这个CSS代码:

p:before { 
    content: 'Intro!'; 
} 

我天真地试过$('p:before').css('content', 'Intro!');但它不起作用。

我该如何使用jQuery做伪元素CSS修改?

+0

这篇文章没有真正提供答案... – Randomblue

+1

@Randomblue:“你不能用jQuery修改伪元素”而不是答案? – BoltClock

+0

@Sotiris:我不想操纵CSS *元素*本身,只是改变一个CSS *属性*。 – Randomblue

回答

7

你不能。

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'); 

请问你为什么要这样做摆在首位?

+0

伪**元素**!不要让这两个混在一起。 – BoltClock

+0

@BoltClock,谢谢,编辑:) – James

+0

我想要这个的原因是有一个特定的元素上的覆盖,随着时间的推移该特定元素的变化。请参阅[this](http://stackoverflow.com/questions/7731523/doing-overlays-without-an-empty-div)问题。 – Randomblue

2

你可以这样做:

$(document).append($("<style>p:before{ content: 'Intro!' } </style>")); 
+0

Yuck!请不要嵌入'style'。 – Randomblue

+1

@Randomblue:内联样式表=/=内联样式。 – Blazemonger