Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using `.css` for pseudo-elements [duplicate]

Possible Duplicate:
Manipulating CSS :before and :after pseudo-elements using jQuery

I would like to the jQuery equivalent this CSS code:

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

I've naively tried $('p:before').css('content', 'Intro!'); but it doesn't work.

How can I do pseudo-element CSS modifications using jQuery?

like image 552
Randomblue Avatar asked Dec 28 '22 12:12

Randomblue


2 Answers

You can't.

1) The selector, p:before, is not just a selector -- the psuedo element defines functionality that does not affect the actual selection. What is jQuery supposed to return, all p tags? That's all $(...) does -- it returns a bunch of elements that match your selector. jQuery (Sizzle/querySelectorAll) doesn't know how to fetch :before...

2) Psuedo-element/class behaviour is not available via JS APIs either.

The only way to do something like this, dynamically via JS, would be to create a <style> element, like so:

$('<style>p:before{content:"intro";}</style>').appendTo('head');

May I ask why you want to do this in the first place?

like image 182
James Avatar answered Jan 14 '23 19:01

James


You can do this:

$(document).append($("<style>p:before{ content: 'Intro!' } </style>"));
like image 43
Tarcísio Júnior Avatar answered Jan 14 '23 19:01

Tarcísio Júnior