'ol list counter reset based on start property using jquery
I need to make a jquery script that can take the OL start properly and transform it into a css based counter. So for a html like this:
<ol >
<li>First</li>
<li>Second</li>
</ol>
<p></p>
<ol start ="3" >
<li>First</li>
<li>Second</li>
</ol>
should start the numbering from 3 on the second list using the css
OL { counter-reset: list 3 }
LI { display: block }
LI:before {
content: counter(item) ". ";
counter-increment: item;
display:block;
}
I'd like to add the counter reset automatically based on the start property. What i got till now is :
$("ol").each(function() {
var index = $("ol").prop("start")-1;
$(this).css({counter-reset:list index});
});
the index var is working but i don't know how to insert that inside the css property.
Solution 1:[1]
We're doing this with JS because the surrounding CSS is hiding the default numbering. We have a CMS that is providing a start attribute:
If you did want to do it in JS, I'd suggest:
<ol >
<li>First</li>
<li>Second</li>
</ol>
<p></p>
<ol start="3" >
<li>First</li>
<li>Second</li>
</ol>
Then this CSS will recreate the numbering using :before
ol {
counter-reset: li
}
li {
list-style-type: none;
counter-increment:li;
}
li:before {
content:" " counter(li) ". ";
}
and this JS will then apply the start attribute in conjunction with your styles:
$("ol").each(function(idx, el) {
var index = parseInt($(el).attr("start"))-1;
if (!isNaN(index)) {
$(el).css({'counter-reset':'li ' + index});
}
});
as demonstrated here...
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 |