2

$.each()jQueryのメソッドを使用して、いくつかのオブジェクトをループしています。メソッドに含まれるオブジェクトが他にもあるかどうかを確認する方法はあり$.each()ますか?

何かのようなもの:

$.each(data, function(o, myObject) {
    if(data.hasMoreObjects) {
        // append something 
    } else {
        // append nothing
    }
});
4

5 に答える 5

4

コールバック関数に渡される最初の引数はindexです。これをと比較して、lengthさらに要素があるかどうかを判断できます。

$.each(data, function(index, myObject) {
    if (index === (data.length - 1)) {
        // this is the last
    } else {
        // there are more coming
    }
});

内容によってdataは、の代わりに他のプロパティを使用する必要がある場合がありますdata.length。たとえば、dataがオブジェクトの場合、を使用しますObject.keys(data).length

$.eachドキュメントとObject.keysのドキュメント。

于 2013-01-07T17:57:52.827 に答える
3

data他のすべての回答は、それが配列である(またはいくつかのプロパティを持っている)と想定しているようですが、 jQueryページ.lengthによると、任意のオブジェクトで使用できます。$.each

オブジェクトの最後の列挙可能なキーを取得する方法は次のとおりです

function lastKey(o) {
    var keys = Object.keys(o);
    return keys[keys.length-1];
}

次に、でこれと比較できます$.each

于 2013-01-07T18:04:39.427 に答える
3

逆の方が簡単です。たとえば、次の場合:

a b c d

そして、それらの間に挿入したい|場合は、次のようにします。

a| b| c| d

つまり、ループし|て最後を除くすべてにを追加します。ただし、最初の場合は別の方法で作業する方が簡単です。

a |b |c |d

あなたがこれを行うことができるので:

var isfirst = true;
$.each(data, function(o, myObject) {
    if( isfirst) {
        isfirst = false;
    }
    else {
        // do something
    }
});

ただし、これが不可能な場合は、要素をカウントするために1回ループする必要があります(オブジェクトではなく配列の場合.lengthは問題ありません)。その後、ループにイテレータを追加します。

于 2013-01-07T17:58:01.267 に答える
1
var howmany = data.length,
    i = 1;
$.each(data, function(o, myObject) {
    if(i == howmany) {
        // do something with the last
    }
    else {
        // do something with the others
    }
    i++;
}
于 2013-01-07T17:58:38.693 に答える
1

インデックスを長さodデータオブジェクトと比較します、、

これを試して

$.each(data, function(index, myObject) {
 if (index === (data.length - 1)) {
    //append nothing     } else {
    // append something
 }
});
于 2013-01-07T18:01:47.273 に答える