2016-10-03 8 views
0

私は画像を取得してページに表示するオブジェクトの配列を持っています。一度表示され、最後のものが最初に表示され、最初のものが最後 - 後ろです。 .append()を使用すると、正しい順序になりますが、意味的には、html要素が正しく表示されるように.prepend()を使用する必要があります。何が起こっているかについてのご意見は?私はこれを引き起こしているものに関して何かオンラインで見つけることができません。この動作を説明する文書へのリンクも素晴らしいでしょう!jQuery .prependは配列を逆転しましたか?

for (var i = 0; i < skills.length; i++) { 
    var icon = '<img id="' + items[i].id + '" class="item-img-lg" data-toggle="modal" data-index="'+ i +'"src="' + items[i].iconurl + '" />'; 
    $('#items-large').prepend(icon); 
}; 
+4

'.prepend()'は常に引数を親の最初の子として挿入します。私はあなたが '.preprend()'を "意味的に"使う必要がある理由を理解していません。 '.append()'はあなたが必要とするものを正確に示しています:*配列の各要素を親に*追加したい*です。 –

+0

ありがとうございます。あなたは良い点を持っていました。私は自分のコードをHTML内で少し整理しました。 :) –

答えて

1

前置詞は配列を逆にしません。最初のループでは、最初のスキルが#items-largeの前に追加されます。どちらが最初のアイコンをアイテムの最初のアイコンにしたいと思っているのでしょうか?しかし、2番目のループでは、2番目のアイコンが#items-largeの前に付加されます(前置されます)。ああ!今、最初のアイコンは実際に最後のアイコンで、2番目のアイコンは最初のアイコンです!これはあなたのすべてのアイコンについて繰り返され、最終的には配列の最後のアイコンが前面または最初になり、配列の最初のアイコンが最後に表示されます。

#items-largeにあるものによっては、appendを使用したくない場合もあります。

は、次のことを想像してみて:

<div id="items-large"> 
<!-- prepended icons go here --> 
    <h1>My awesome icons</h1> 
<!-- appended icons go here --> 
</div> 

そして、まだアイコンの同じ不適切な順序につながる追加します!

あなたがここから何をすべきかを把握するのに十分なスマートですが、あなたは解決策が必要な場合:

を上)あなたが手で配列にあなたのアイコンを逆転できる、またはあなたが(逆に呼び出すことができますそれらをプリペアする前にあなたの配列を読み込みます。

+0

これを見つけましたが、アイテムの追加方法の説明に感謝します!本当に役に立ちます。私はオブジェクトの文脈について学び続ける必要があります! –

0

の代わりに、あなたのループをデクリメントまたはあなたはまだループをインクリメントすることを選択した場合、それをarray.reversing試みることができるインクリメント:

ここでjQueryのコードですか?

0

.reverse()メソッドを使用すると、配列内の要素を「逆転」することができます。

.append()を使用してください。

// Reverse the array order 
items = items.reverse(); 

for (var i = 0; i < skills.length; i++) { 
    var icon = '<img id="' + items[i].id + '" class="item-img-lg" data-toggle="modal" data-index="'+ i +'"src="' + items[i].iconurl + '" />'; 
    $('#items-large').append(icon); 
}; 
+0

.reverse()メソッドを使用すると、「関数ではない」というエラーが返されます。 –

+0

'items'は配列ですか?それとも、「スキル」でなければならないのでしょうか? –

関連する問題