jquery – HTML中的数字嵌套排序列表

前端之家收集整理的这篇文章主要介绍了jquery – HTML中的数字嵌套排序列表前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个嵌套的有序列表。
<ol>
  <li>first</li>
  <li>second
  <ol>
    <li>second nested first element</li>
    <li>second nested secondelement</li>
    <li>second nested thirdelement</li>
  </ol>
  </li>
  <li>third</li>
  <li>fourth</li>
</ol>

当前,嵌套元素从1开始再次返回,例如。

>第一
>第二

>第二个嵌套的第一个元素
>第二个嵌套的第二个元素
>第二个嵌套的第三个元素

>第三
>第四

我想要的是第二个元素编号如下:

>第一
>第二

2.1。第二嵌套第一元素

2.2。第二嵌套第二元素

2.3。第二嵌套第三元素
>第三
>第四

有没有办法做到这一点?

解决方法

这里有一个在所有浏览器中都有效的示例。纯CSS方法适用于实际的浏览器(即IE6 / 7以外的所有内容), jQuery代码覆盖了不支持的。它在 SSCCE的味道,你可以只是copy’n’paste’nrrun没有改变。
<!doctype html>
<html lang="en">
    <head>
        <title>SO question 2729927</title>
        <script src="http://code.jquery.com/jquery-latest.min.js"></script>
        <script>
            $(document).ready(function() {
                if ($('ol:first').css('list-style-type') != 'none') { /* For IE6/7 only. */
                    $('ol ol').each(function(i,ol) {
                        ol = $(ol);
                        var level1 = ol.closest('li').index() + 1;
                        ol.children('li').each(function(i,li) {
                            li = $(li);
                            var level2 = level1 + '.' + (li.index() + 1);
                            li.prepend('<span>' + level2 + '</span>');
                        });
                    });
                }
            });
        </script>
        <style>
            html>/**/body ol { /* Won't be interpreted by IE6/7. */
                list-style-type: none;
                counter-reset: level1;
            }
            ol li:before {
                content: counter(level1) ". ";
                counter-increment: level1;
            }
            ol li ol {
                list-style-type: none;
                counter-reset: level2;
            }
            ol li ol li:before {
                content: counter(level1) "." counter(level2) " ";
                counter-increment: level2;
            }
            ol li span { /* For IE6/7. */
                margin: 0 5px 0 -25px;
            }
        </style>
    </head>
    <body>
        <ol>
            <li>first</li>
            <li>second
                <ol>
                    <li>second nested first element</li>
                    <li>second nested second element</li>
                    <li>second nested third element</li>
                </ol>
            </li>
            <li>third</li>
            <li>fourth</li>
        </ol>
    </body>
</html>

猜你在找的jQuery相关文章