0

为什么这行不通?

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>
4

2 回答 2

2

您有两个具有相同 ID 的 DIV。尝试将“#dropable”更改为“.drag”。

于 2013-02-28T15:26:36.593 回答
0

此代码存在多个问题。

首先$().each是针对 DOM 元素,而不是针对您自己的数组/对象。你想要$.each。其次,this.app1在你的对象中不存在,你有appand app2

最后,最重要的是,您有 2 个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 + '">');
    }
});
于 2013-02-28T15:29:46.240 回答