0

この codecademy.com の演習では、each 関数を使用して jQuery 変数を反復処理し、id jQueryAttributes のリストにすべてのキーを追加することになっています。以下に各関数を書きましたが、正しくありません。jQueryAttributes で id に追加する方法がわかりません。Htmlは以下です

var jQuery = $;

//iterate over jQuery, adding every key
//to the list with id jQueryAttributes
$.each(jQuery, function(index, value){      
$('#'+index).append($('<li></li>').html(value));
}); 

html

<div id="left">
<h1>$ methods and attributes</h1>
<ul id='jQueryAttributes'>
</ul>
</div>

アップデート

言い忘れたことを一つ。関数のインデックスを使用して、各リスト項目に異なる ID を割り当てることになっています。

4

4 に答える 4

2

私はあなたがこれだけを必要としていると思います:

$.each($, function(index, value){      
    $('#jQueryAttributes').append($('<li></li>').html(index));
});​

フィドル

値は実際の関数なので、インデックスが必要です

于 2012-09-07T15:21:56.117 に答える
1

私が見る限り、あなたは 2 つの問題に直面しています。1つ目は、使用しようとしているということです

$('#'+index)

まだDOMに追加されていない要素に接続します。CoolStrawが提案したことを追加して、IDを割り当てることができます

.attr('id',index)

最後に、挿入される要素の ID を設定します。

2 つ目の問題は、jQuery オブジェクトの値をキャストせずに文字列として挿入しようとしていることです。これをいじってみると、結果は非関数と非オブジェクトの値だけになりました。だから代わりに

jQuery('<li></li>').html(value)

使用する

jQuery('<li></li>').html(''+value)

また

jQuery('<li>'+value+'</li>')

したがって、これらのいずれかが機能します。

$.each(jQuery,function(index,value){ $('#jQueryAttributes').append(jQuery('<li></li>').html('' + value).attr('id',index)); });

jQuery で要素を作成する前に、要素を文字列として作成します。

$.each(jQuery,function(index,value){ jQuery('#jQueryAttributes').append(jQuery('<li id="' + index + '">' + value +' </li>')); });
于 2012-09-07T15:47:11.173 に答える
0
$('#jQueryAttributes').append($('<li></li>').html(value));

各アイテムに異なるインデックスを割り当てたい場合は、.each から返されるインデックスを使用して、それに応じてフォーマットする必要があります。

$('#jQueryAttributes').append($('<li id="id_'+ index +'"></li>').html(value));
于 2012-09-07T15:13:24.847 に答える
0

jquery ドキュメントからhttp://api.jquery.com/each/

.each() メソッドは、DOM ループ構造を簡潔にし、エラーを起こしにくくするように設計されています。呼び出されると、jQuery オブジェクトの一部である DOM 要素を反復処理します。コールバックが実行されるたびに、0 から始まる現在のループ反復が渡されます。さらに重要なことに、コールバックは現在の DOM 要素のコンテキストで起動されるため、キーワード this は要素を参照します。

ページに単純な順序付けられていないリストがあるとします。

<ul>
    <li>foo</li>
    <li>bar</li>
</ul>

リスト項目を選択して、それらを反復処理できます。

$('li').each(function(index) {
    alert(index + ': ' + $(this).text());
});

したがって、リスト内の各項目についてメッセージが警告されます。

0: フー 1: バー

false を返すことで、コールバック関数内からループを停止できます。

于 2012-09-07T15:15:31.987 に答える