2011-01-28 19 views
1

私はJQuery初心者です。jQuery変数文字列を持つhtml要素を追加

<div id="container"> 
<p>some text </p> 
<p>some text </p> 
<p>some text </p> 
</div> 

jQueryのスクリプト:

var obj{ 
property : {'apple', 'orange', 'banana'} 
} 

for(i=0; i<=2; i++){ 
$("#container p:eq("+i+")").append(obj.property[i]); 
} 

と得ることを期待私は、次の

HTMLのようなHTML要素に(アレイ状に宣言された)オブジェクトのプロパティを追加しようとしていますこれは:

<p>some text apple</p> 
<p>some text orange</p> 
<p>some text banana</p> 

私のFirebugコンソールにはエラーレポートが表示されませんが、何も表示されません。

私は間違っていますか?また、より良い方法であれば、forループを.each()に置き換える方法はありますか?

ありがとうございます

答えて

6

あなたのプロパティのリストが正しく形成されていません。数値でインデックス付けされたリストリテラルは、中括弧を使用せずに角括弧を使用して形成されます。

投稿したコードにすると構文エラーが発生します。そうでない場合は、単純に実行されない可能性があります。

ここまでの修正版です:objのような定義されるべき別の答えで述べたように

 

    var obj = { 
    property : ['apple', 'orange', 'banana'] 
    } 

    for(i=0; i<=2; i++){ 
    $("#container p:eq("+i+")").append(obj.property[i]); 
    } 
 
+0

彼の例を追加... – 0x60

+0

また、変数の宣言には等号が必要です。 var obj = {... –

1

:ザ・ループが動作するために

var obj = { 
    property : ['apple', 'orange', 'banana'] 
} 

が、使用するために、より良い習慣です.each()、値をハードコードする必要がないという理由だけがある場合 - forを使用する場合、プロパティの数を変更した場合は、そのループも更新する必要があります。ここで私はそれを行う方法です:

$("#container > p").each(function(i) { $(this).append(obj.property[i]); }); 
関連する問題