2

我正在尝试从 each() 对象中的变量解析 json 对象。

例如我有这个长数组:

{castle: "0", commercial: "3", common: "0", cultural: "2", dioni: "0", holidays: "0", island: "2", nereides: "2", others: "0", peninsula: "0", thetis: "0"}

我的 div 与数组的键具有相同的类。例如:

<div class="castle"></div>
<div class="commercial"></div>
<div class="common"></div>
<div class="cultural"></div>

等等

所以我想将每个键的值附加到 class = key 的类中

$("body div").each(function(){
   var array = [] // the reall long array;

   var a = $(this).attr("class").split(' ')[0]; // in case there are two divs, split
   $("." + a).text(array.a + " hours"); // array.a doesn't work

});

在这种情况下,array.a 不存在于数组中,因此我无法解析每个类的每个键的值。

我该如何解决这个问题?

4

3 回答 3

3

为什么你不这样做呢?使用 a循环(本身)通过对象并设置它for..in

for (var key in obj) {
    $("div." + key).text(obj[key]);
}

此循环内的选择器将找到div与等于的类的key,并将相应的值附加到它。

演示:http: //jsfiddle.net/hungerpain/9z4zj/

但是,看看你的并发症,我同意你的方法是最简单的。只需更改array.aarray[a]. 这就是你所需要的。

于 2013-08-03T08:50:34.160 回答
0

使用 array[a] 而不是 array.a

var obj = {castle: "0", commercial: "3", common: "0", cultural: "2", dioni: "0", holidays: "0", island: "2", nereides: "2", others: "0", peninsula: "0", thetis: "0"}

$("body div").each(function(){
   var array = [] // the reall long array;

   var a = $(this).attr("class").split(' ')[0]; // in case there are two divs, split

   $("." + a).text(obj[a] + " hours"); // array.a doesn't work

});

工作演示:http: //jsfiddle.net/uNrKy/

于 2013-08-03T09:09:02.027 回答
0

尝试这个:

$(document).ready(function () {
    $("body div").each(function () {
        var myarray = {
            castle: "0",
            commercial: "3",
            common: "0",
            cultural: "2",
            dioni: "0",
            holidays: "0",
            island: "2",
            nereides: "2",
            others: "0",
            peninsula: "0",
            thetis: "0"
        }; // the reall long array;

        var a = $(this).attr("class").split(' ')[0]; // in case there are two divs, split
        $("." + a).html(myarray[a] + " hours"); // array.a doesn't work
    });
});  

JSFIDDLE 演示

于 2013-08-03T09:06:44.033 回答