2013-02-16 11 views
7

Mam następujące CSSGet Przed zawartością CSS z jQuery

h1:before { 
    content: "Chapter " counter(lvl1) "\000d\000a"; 
    counter-increment: lvl1; 
    white-space: pre-wrap; 
} 
h1 { 
    page-break-before: right; 
} 

i to HTML

<p>...</p> 
<h1>A Title</h1> 
<p>...</p> 

z danym CSS dostaję coś takiego

Chapter 1 
A Title 

Kiedy spróbuj uzyskać tekst z jQuery otrzymuję "tytuł". Czy istnieje możliwość uzyskania "Chapter 1 \ nA Title"?

Dzięki

Odpowiedz

25

pomocą getComputedStyle():

$('h1').each(function(){ 
    console.log(window.getComputedStyle(this,':before').content); 
}); 

before() jest sposób jQuery używany do przechodzenia DOM, pobiera/ustawia poprzedniego elementu, to ma nie dostępu pseudo-elementu.

Working JS Fiddle, dostarczany przez Eric.

Choć nie jest niefortunne zastrzeżenie, że to podejście zwraca łańcuch dosłowne używany w deklaracji content zamiast generowanej zawartości rzeczywisty.

+0

Działające skrzypce, dla wszystkich zainteresowanych: http://jsfiddle.net/YdMcv/2/ – Eric

+0

Właściwie to nie jest w porządku, ponieważ pobiera dosłownie treść ': before' z pliku CSS, a nie rzeczywiste wygenerowane zadowolony. OP chce "Chapter 1", a nie "Chapter" counter (lvl1) '... Fajna odpowiedź, ale nie sądzę, że byłaby przydatna w tym przypadku –

+0

@Eric: dzięki za to, edytowane. –