首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用'.each‘方法:如何让多个有序列表的索引从[0]开始?

使用'.each‘方法:如何让多个有序列表的索引从[0]开始?
EN

Stack Overflow用户
提问于 2010-04-11 09:48:54
回答 2查看 1.2K关注 0票数 2

我有多个div,每个div都有一个有序列表(长度不同)。我使用jquery根据索引向每个列表项添加一个类(目的是对每个列表的各个部分进行分栏化)。到目前为止我所拥有的..。

代码语言:javascript
复制
<script type="text/javascript">

/*    Objective: columnize list items from a single ul or ol in a pre-determined number of columns
    1. get the index of each list item
    2. assign column class according to li's index
*/
$(document).ready(function() {

    $('ol li').each(function(index){
        // assign class according to li's index ... index = li number -1: 1-6 = 0-5; 7-12 = 6-11, etc.
        if ( index <= 5 )    {
            $(this).addClass('column-1');
            }
        if ( index > 5 && index < 12 )    {
            $(this).addClass('column-2');
            }
        if ( index > 11 )    {
            $(this).addClass('column-3');
            }

        // add another class to the first list item in each column
        $('ol li').filter(function(index) {
            return index != 0 && index % 6 == 0;
            }).addClass('reset');

    });    // closes li .each func
});    // closes doc.ready.func

</script>

..。如果只有一个列表,则成功;当有其他列表时,最后一个列类(' column -3')被添加到页面上所有剩余的列表项中。换句话说,脚本目前正在连续索引所有后续列表/列表项,而不是针对每个有序列表重新设置为。

谁能告诉我正确的方法/语法来纠正/修改它,以便脚本重新寻址/索引每个有序列表?

在此之前,非常感谢您。

shecky

附注:标记非常简单:

代码语言:javascript
复制
<div class="tertiary">
 <h1>header</h1>
 <ol>
  <li><a href="#" title="a link">a link</a></li>
  <li><a href="#" title="a link">a link</a></li>
  <li><a href="#" title="a link">a link</a></li>
 </ol>
</div><!-- END div class="tertiary" -->
EN

回答 2

Stack Overflow用户

发布于 2010-04-11 09:54:14

这将遍历每个OL,但一次一次:

代码语言:javascript
复制
// loop over each <ol>
$('ol').each(function(olIndex){

    // loop over each <li> within the given <ol> ("this")
    $(this).find('li').each(function(liIndex){
        // do your <li> thing here with `liIndex` as your counter
    });

});

至于中间的所有东西,你也许可以用一些更好的选择器来改进它:

代码语言:javascript
复制
$('ol').each(function(){

  $(this).find('li')

     .filter(':lt(6)').addClass('column-1')            // <li> 1-5
       .filter(':first').addClass('reset').end().end() // <li> 1
     .filter(':gt(5):lt(12)').addClass('column-2')     // <li> 6-11
       .filter(':first').addClass('reset').end().end() // <li> 6
     .filter(':gt(11)').addClass('column-3')           // <li> 12+
       .filter(':first').addClass('reset');            // <li> 12

});

当然,如果我们在这里制作列,也许我们应该动态地获取这些计数?

代码语言:javascript
复制
$('ol').each(function(){

  var $lis = $(this).find('li');
  var len = $lis.size();
  var colLen = Math.ceil(count / 3);

  // and so on with the filter stuff with 

});
票数 3
EN

Stack Overflow用户

发布于 2010-04-11 10:00:19

代码语言:javascript
复制
$('ol').each(function(){
  $(this).find('li').each(function(index){
    // assign class according to li's index ... index = li number -1: 1-6 = 0-5; 7-12 = 6-11, etc.
    if ( index <= 5 )    {
        $(this).addClass('column-1');
        }
    if ( index > 5 && index < 12 )    {
        $(this).addClass('column-2');
        }
    if ( index > 11 )    {
        $(this).addClass('column-3');
        }
  }).filter(function(index) {
        return index != 0 && index % 6 == 0;
  }).addClass('reset'); // Closes li each and filter
}); // closes ol each
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2615758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档