3

リストを作りたい。問題ない。

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アイテムにクラスが含まれるようになります。

これを見つける方法について何か提案はありますか?

ありがとう!

4

5 に答える 5

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');
    }
}
于 2012-05-14T23:57:32.457 に答える
1

i7ループが実行されている間、等しくなることはありませんi < 7

于 2012-05-15T01:01:21.070 に答える
0

eq()負のインデックスカウントを逆方向に使用します。

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

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

于 2012-05-15T00:00:15.450 に答える
0

これを行う1つの方法は、複製されたアイテムへの参照をループストア内に格納することです。

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

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

$item.addClass('last');

ループが終了$itemすると、最後に追加されます。もちろん、これはループが常に少なくとも1回の反復で実行されることを前提としています。反復回数が可変でゼロの場合は、次のように言うことができます。

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

#domid(反復ごとに要素を再選択するのではなく、要素への参照も保存していることに注意してください。)

于 2012-05-15T00:05:12.220 に答える
0

これは私がそれをする方法です:

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

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

$domid.children( ':last' ).addClass( 'last' );
于 2012-05-15T00:34:56.777 に答える