Ich möchte das CSS Counter-Inkrement Attribut auf ".demo:before
" mit jQuery festlegen.CSS-Zählerinkrement über jQuery setzen
Das Problem ist, dass jQuery auf ein Pseudoelement nicht zugreifen kann. Ein anderer S.O. antwort (was ich jetzt nicht finden kann) schlug vor, ein datenattribut zu setzen und diesen wert dann in der CSS zu verwenden, aber das funktioniert auch nicht. Ist das etwas, das erreicht werden kann?
Vereinfachtes Beispiel: http://jsfiddle.net/4h7hk8td/
HTML:
<ul class="demo">
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
JS:
// 1) User Sets Unit Size
var myUnit = 100;
// 2) Unit size is saved via data attribute
$('.demo li').attr('data-unit', myUnit);
CSS:
.demo {
counter-reset: list;
}
.demo li:before {
/* 3) CSS gets data attribute and applies as the increment. Not working :(*/
counter-increment: list attr(data-unit);
content: counter(list);
}
hm ... Wenn Sie Datenattribute verwenden, ist es möglich, 'content: attr (data-unit) 'zu verwenden und den Counter-Teil komplett zu überspringen? http://jsfiddle.net/jmarikle/js6gzt5q/. –
Fun Tatsache: wenn es nicht für die Tatsache war, dass [CSS3 Attr() nirgends unterstützt wird] (http://StackOverflow.com/Questions/8769786/Css3S-Attr-doesnt-Work-in-major-Browsers/8769922 # 8769922), Sie könnten tatsächlich 'counter-increment: list attr (Dateneinheits-Ganzzahl) schreiben;' und es würde einfach funktionieren. – BoltClock
Ja, ich könnte das tun, wenn das der einzige Weg ist. Ich habe nur eine Sache, die bereits mit den CSS-Zählern erstellt wurde, also hoffte ich, dass ich nur modifizieren könnte, was bereits da war. – kthornbloom