无法弄清楚如何使用$ .each访问对象元素

时间:2014-04-28 19:51:38

标签: jquery

我希望以下内容提醒“游戏1'然后' game2'但它没有提醒任何事情

var pages = [{
    "menuMain": {
        "pageTitle": "game1",
        "leftButtonText": "back",
        "leftButtonHREF": "#mainPage",
        "rightButtonText": "Close",
        "rightButtonHREF": "#mainPage"
    },
    "subMenu": {
        "pageTitle": "game2",
        "leftButtonText": "back",
        "leftButtonHREF": "#mainPage",
        "rightButtonText": "Close",
        "rightButtonHREF": "#mainPage"
    }
}]

$.each(pages, function (id, page) {
    alert(page.pageTitle);
});

编辑:更新以使问题更清晰

3 个答案:

答案 0 :(得分:1)

您正在迭代pages这是一个dict数组,请尝试:

alert(page.menuMain.pageTitle);

答案 1 :(得分:0)

问题是你只是在击中对象的顶级元素。

如下所示,您将得到您期望的结果:

$.each(pages.menuMain, function(id, page) {
          alert(page.pageTitle);
        });

答案 2 :(得分:0)

回调函数中的page参数是数组的直接成员,在您的情况下为{"menuMain":{..}} object

所以你应该这样做:

$.each(pages, function(id, page) {
    alert(page.menuMain.pageTitle);
});

修改

如果您事先不知道这些属性,这可能是正确的方法:

$.each(pages, function(id, page) {
    for(var pageSection in page) {
        if(page.hasOwnProperty(pageSection)) {

            //This block will loop for every 
            //top-level property in your members

            //This will alert "menuMain" or "subMenu"
            alert(pageSection);

            //This will alert "game1" or "game2"
            alert(page[pageSection].pageTitle);
        }
    }
});