web-dev-qa-db-ja.com

jQueryのeach()の最後のインデックスを見つける方法は?

私はこのようなものを持っています...

$( 'ul li' ).each( function( index ) {

  $( this ).append( ',' );

} );

最後の要素のインデックスを知る必要があるので、このようにできます...

if ( index !== lastIndex ) {

  $( this ).append( ',' );

} else {

  $( this ).append( ';' );

}

アイデアはありますか?

38
daGrevis
var total = $('ul li').length;
$('ul li').each(function(index) {
    if (index === total - 1) {
        // this is the last one
    }
});
80
Luke Sneeringer
var arr = $('.someClass');
arr.each(function(index, item) {
var is_last_item = (index == (arr.length - 1));
});
14
BnW

セレクター$("ul li")をキャッシュすることを忘れないでください。

ただし、長さ自体をキャッシュすることは微妙な最適化です。これはオプションです。

var lis = $("ul li"),
    len = lis.length;

lis.each(function(i) {
    if (i === len - 1) {
        $(this).append(";");
    } else {
        $(this).append(",");
    }
});
9
Raynos
    var length = $( 'ul li' ).length
    $( 'ul li' ).each( function( index ) {
        if(index !== (length -1 ))
          $( this ).append( ',' );
        else
          $( this ).append( ';' );

    } );
6
Mutt

jQuery .last();を使用して

$("a").each(function(i){
  if( $("a").last().index() == i)
    alert("finish");
})

[〜#〜] demo [〜#〜]

0
Marco Allori

これは非常に古い質問ですが、もっとエレガントな方法があります。

$('ul li').each(function() {
    if ($(this).is(':last-child')) {
        // Your code here
    }
})
0
Luca Fagioli