2013-02-28 71 views
0

爲什麼這不起作用?jQuery json格式

var data = {"one": [ 
    {"slot1":true, "app":"facebook"}, 
    {"slot2":true, "app2": "facebook"} 
]}; 

$(data.one).each(function() { 
    if(this.slot1==true){ 
     $('#dropable').find('.1_1').append('<img src="img/apps/' + this.app1 + '.png" alt="' + this.app1 + '">'); 
    } 
    if(this.slot2==true){ 
     $('#dropable').find('.1_2').append('<img src="img/apps/' + this.app2 + '.png" alt="' + this.app2 + '">'); 
    } 
}); 

我#dropable:

<div id="dropable" class="drag"><div class="app 1_1"></div></div> 
<div id="dropable" class="drag"><div class="app 1_2"></div></div> 
+1

你是什麼意思是 「不工作」 嗎?它做什麼,它不做什麼,它應該做什麼? – 2013-02-28 15:24:18

+0

走出來了: undefined 但它應該是顯示: facebook Evolutio 2013-02-28 15:25:26

+1

'this.app1'是不確定的,但它應該仍然工作,只是會給你文字'「未定義」'作爲替代文字和檢查元素應該清晰可見的圖像名稱。 – 2013-02-28 15:26:24

回答

2

你有兩個div用相同的ID。嘗試將'#dropable'更改爲'.drag'。

+0

thx,但它只顯示第二個,但不是第一個:( – Evolutio 2013-02-28 15:29:09

0

此代碼有多個問題。

第一個$().each用於DOM元素,不適用於您自己的數組/對象。你想要$.each。其次,this.app1不存在於您的對象中,您有appapp2

最後,也是最重要的是,您有2個ID爲dropable。你不能那樣做。 ID應該是唯一的。使用類而不是ID。

<div class="drag"><div class="app 1_1"></div></div> 
<div class="drag"><div class="app 1_2"></div></div> 

然後再去做這樣的:

var data = {"one": [ 
    {"slot1":true, "app1":"facebook"}, 
    {"slot2":true, "app2":"facebook"} 
]}; 

$.each(data.one,function() { 
    if(this.slot1==true){ 
     $('.drag').find('.1_1').append('<img src="img/apps/' + this.app1 + '.png" alt="' + this.app1 + '">'); 
    } 
    if(this.slot2==true){ 
     $('.drag').find('.1_2').append('<img src="img/apps/' + this.app2 + '.png" alt="' + this.app2 + '">'); 
    } 
}); 
+0

thx完美的作品,但我還有一個問題,我可以用for循環來計算'.1_1'和'.1_2'...? – Evolutio 2013-02-28 15:33:09

+0

@Evolutio:您可以執行'$('。drag')。find('。app')。each('循環遍歷每個'.app'元素。 – 2013-02-28 15:37:16