Uzun bir süredir googling ve stackoverflow'ing yapıyorum ve sıkışıp kaldım. yapmak iç içe numaralandırma (1.
, 1.1.
, 1.1.1
vs.) hem başlıkları (<h4>
aracılığıyla <h2>
) ve listeleri (<ol>
ve <ul>
) için:
görev şudur. komplike noktalar şunlardır:İç içe geçmiş başlıkların ve listelerin numaralandırılması
- herhangi bir miktarda başlıkları ve listeler (örneğin bir
h2
daha sonra birincih3
ikih4
s sahiptir, ikincih2
ikih3
s olabilir, iç içe üçol
s olabilir olabilir Bunların ikincisi, iç içe geçmişol
ve benzeri ileul
'a sahiptir, vb. Ve numaralandırma benzersiz olmalıdır ve tüm belgede gözükmelidir. - belgesinde, HTML ile çevik olmayan kişiler için bir şablon olacak, böylece daha az sınıf, veri özniteliği vb.
Zaten yaptığım Ne:
$(function() {
indices = new Array();
// Not every element should be numbered, so I've added a class to those who should
$(".item").each(function() {
// I'm assigning the level manually, like this:
// <h4 class="item" data-level="3">blah blah</h4>
// any better solution is welcome
var hIndex = parseInt($(this).data("level"));
if (indices.length - 1 > hIndex) {
indices= indices.slice(0, hIndex + 1);
}
if (indices[hIndex] == undefined) {
indices[hIndex] = 0;
}
indices[hIndex]++;
// Now I try to number lists and nested lists, and here I'm stuck
if ($(this).is("ol, ul")) {
var $that = $(this);
$(this).find("li").each(function() {
// Trying to add those attributes to <li>s... no dice :(
$(this).addClass("item");
$(this).data("level", $that.data("level")+1);
});
}
var number = $.grep(indices, Boolean).join(".");
$(this).prepend(number+". ");
});
});
herhangi bir öneri çok takdir edilmektedir.