如何在js循环中找到最后一项,以便我可以为其添加一个类?

时间:2012-05-14 23:56:09

标签: javascript jquery

我想建立一个列表。没问题。

for (i = 0; i < 7; i++) {
    $('#domid').append(variable.clone());
}

如何获取列表中的最后一项(在本例中为i.7)并为其添加一个类?

for (i = 0; i < 7; i++) {
    $('#domid').append(variable.clone());

    if (i===7) {
        $('.domclass').addClass('last');
    };

}

但这不起作用。这使得当计数器达到7时,所有的.todo项都有类。

有关如何找到这个的任何建议吗?

谢谢!

5 个答案:

答案 0 :(得分:7)

$('.domclass:last').addClass('last');

或者,如果您想在循环中执行此操作(因此,正如评论者指出的那样,您不必遍历DOM以再次访问该元素):

var newElement;

for(var i = 0; i < 7; i++){
    newElement = variable.clone();
    $('#domid').append(newElement);
    if(i === 6) {
        $(newElement).addClass('last');
    }
}

答案 1 :(得分:1)

i永远不等于7,因为循环在i < 7

时运行

答案 2 :(得分:0)

eq()向后带负索引。

$('.domclass:eq(-1)');

http://api.jquery.com/eq/

答案 3 :(得分:0)

一种方法是在循环中存储对克隆项的引用:

var i,
    $item,
    $domid = $('#domid');

for (i = 0; i < 7; i++) {
    $item = variable.clone();
    $domid.append($item);
}

$item.addClass('last');

当循环结束时$item将是添加的最后一个。当然,这假设循环将始终运行至少一次迭代 - 如果迭代次数是可变的并且可能为零,则可以说:

if ($item) $item.addClass('last');

(请注意,我还存储了对#domid元素的引用,而不是在每次迭代时重新选择它。)

答案 4 :(得分:0)

这是他我将如何做到的:

var $domid = $( '#domid' );

for ( var i = 0; i < 7; i+= 1 ) {
    $domid.append( variable.clone() );
}

$domid.children( ':last' ).addClass( 'last' );