Si vous voulez le faire cross-browser avec jQuery:
$("ol#list ol").each(function(i, el){
$(this).children().each(function(ci,cel){
$(this).prepend('<span class="pseudo-num">' + [i + 1, ci + 1].join('.') + ' </span>');
});
}).addClass('pseudo-processed');
et dans votre CSS:
ol .pseudo-num { display: none }
ol.pseudo-processed { list-style: none; padding-left: 0 }
ol.pseudo-processed .pseudo-num { display: inline; font-weight: bold }
Ceci est pour un seul niveau. Vous pouvez modifier le code pour créer une fonction récursive pour plusieurs niveaux.
Cette configuration est d'améliorer progressivement votre page. Sans Javascript, cela reviendrait à une numérotation normale imbriquée.
MISE À JOUR: Merci à @Gumbo travail, que nous avons retravaillé ce code dans un plugin récursif. Il utilise le même CSS comme dans mon exemple précédent, mais maintenant il est « à part entière » plugin jQuery avec support pour toute profondeur:
$.fn.outline = function(options, counters){
var options = $.extend({}, $.fn.outline.defaults, options),
counters = counters || [];
this.each(function(){
$(this).children('li').each(function(i){
var ct = counters.concat([i + 1]);
if(counters.length){
$('<span></span>')
.addClass(options.numberClass)
.text(ct.join('.') + ' ')
.prependTo(this);
}
$(this).children('ol').outline(options, ct);
})
});
if(!counters.length) this.addClass(options.processedClass)
}
$.fn.outline.defaults = {
numberClass: 'pseudo-num',
processedClass: 'pseudo-processed'
}
Vous pouvez ensuite appeler sur un #id
spécifique:
$("#list").outline();
ou utiliser @ agréable sélecteur de Gumbo pour l'appliquer à tous les ol
balises sur une page:
$("ol:not(li > ol)").outline();
et vous pouvez soit remplacer les valeurs par défaut à l'échelle mondiale, ou sur un indi base individuelle:
$.fn.outline.defaults.processedClass = 'ol-ready';
// or
$("#list").outline({processedClass: 'ol-ready'});
Alors que vous ne pouvez pas obtenir "numérotation hiérarchique en pointillé" comme vous décrivez avec HTML pur, vous peut changer le style de numérotation pour chaque niveau (numéro, lettre majuscule, lettre minuscule, symbole grec, etc.). Et cela pourrait être suffisant, selon votre besoin. – jpsimons
Merci, darkporter, je sais, mais ce que je vraiment besoin d'une liste subnumbered qui porte son numéro de parent et d'un séparateur de points. Abraços. –