如何获取元素的第n个子编号

时间:2014-04-23 20:55:00

标签: jquery class count indexing css-selectors

我不需要.index()值。

EG。当我有一个像这样的清单:

<ul>
    <li class="alpha"></li>
    <li class="alpha"></li>
    <li class="alpha"></li>
    <li class="beta"></li>
    <li class="alpha"></li>
    <li class="beta"></li>
    <li class="beta"></li>
    <li class="alpha"></li>
    <li class="beta"></li>
    <li class="beta"></li>
</ul>

我需要获取每个类的订单号,并忽略索引计数列表中的另一个类,所以我需要一些像这样工作的东西:

jQuery('ul li').not('.beta').each(function(){
    jQuery(this).text(get nth-child(THIS NUMBER) here);
});

然后结果就像

<ul>
    <li class="alpha">1</li>
    <li class="alpha">2</li>
    <li class="alpha">3</li>
    <li class="beta"></li>
    <li class="alpha">4</li>
    <li class="beta"></li>
    <li class="beta"></li>
    <li class="alpha">5</li>
    <li class="beta"></li>
    <li class="beta"></li>
</ul>

我可以和其他班级一样,如:

jQuery('ul li').not('.alpha').each(function(){
    jQuery(this).text(get nth-child(THIS NUMBER) here);
});

这是结果

<ul>
    <li class="alpha"></li>
    <li class="alpha"></li>
    <li class="alpha"></li>
    <li class="beta">1</li>
    <li class="alpha"></li>
    <li class="beta">2</li>
    <li class="beta">3</li>
    <li class="alpha"></li>
    <li class="beta">4</li>
    <li class="beta">5</li>
</ul>

请建议

5 个答案:

答案 0 :(得分:4)

each()函数的索引值为:https://api.jquery.com/jQuery.each/

jQuery('ul li').not('.beta').each(function(index){
    var count = index + 1;
    jQuery(this).text(count);
});

答案 1 :(得分:2)

只需使用:

jQuery('ul li').not('.beta').text(function(i){
    return i+1;
})

您可以将功能传递给.text()。在该函数中,第一个参数是堆栈中元素的索引。由于它基于0索引,因此在返回之前需要加1!

这里有一个小提琴:http://jsfiddle.net/wqLXA/1/

此外,您可以直接使用.not$(.alpha),而不是$('.beta')。这将加速这一进程。

答案 2 :(得分:0)

因为每个都提供了一个索引,您可以添加一个索引来获取第n个孩子的数字 -

jQuery('ul li').not('.beta').each(function(index){
    var nth = index + 1; // because of zero based indexes 
    jQuery(this).text(nth);
});

示例 - http://jsfiddle.net/jayblanchard/3eYQS/

答案 3 :(得分:0)

如果你想对同一个函数使用不同的计数但是对于不同的类(在你的示例中同时基本上是beta和alpha的单独计数),试试这个:

jQuery('ul li').each(function(){
    var $current = jQuery(this);
    $current.text((jQuery('ul li.' + $current.attr('class')).index($current) + 1));
});

这会给你一个结果:

<ul>
    <li class="alpha">1</li>
    <li class="alpha">2</li>
    <li class="alpha">3</li>
    <li class="beta">1</li>
    <li class="alpha">4</li>
    <li class="beta">2</li>
    <li class="beta">3</li>
    <li class="alpha">5</li>
    <li class="beta">4</li>
    <li class="beta">5</li>
</ul>

<强> JSFiddle Demo

答案 4 :(得分:0)

var index=1;
$('ul li').not('.alpha').each(function(){   
    $(this).text(index);
    index=index+1;
});