Internet Explorer 7 (and lower) doesn't support CSS counters. Fortunately, jQuery is here to help us. The first thing is to set a series of counters and then cycle through the children element of a target element incrementing those counters and adding them to the markup. Given a basic structure like this, with three nested lists:
<ul> <li>Item</li> <li>Item</li> <li>Item <ul> <li>Item</li> <li>Item</li> <li>Item <ul> <li>Item</li> <li>Item</li> </ul> </li> </ul> </li> </ul>
We can write the following jQuery code:
(function($) { $.fn.counters = function() { var counter = 0; var counter2 = 0; var counter3 = 0; this.find('li').each(function() { counter += 1; var item = $(this); var html = item.html(); item.html('<span>' + counter + '. ' + '</span>' + html); var ul = item.find('ul'); ul.find('li').each(function() { counter2 += 1; var item2 = $(this); var html2 = item2.html(); item2.html('<span>' + counter + '. ' + counter2 + ' ' + '</span>' + html2); var ul2 = item2.find('ul'); ul2.find('li').each(function() { counter3 += 1; var item3 = $(this); var html3 = item3.html(); item3.html('<span>' + counter + '. ' + counter2 + '. ' + counter3 + ' ' + '</span>' + html3); }); }); }); return this; }; })(jQuery);
Finally, we can add our counters:
$(document).ready(function() { $('ul:first').counters(); });
You can see the demo below.
Thank you.
Saved my life... =)