2013-02-28 88 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