循环遍历jQuery列表中的JSON数组

时间:2011-06-29 17:40:28

标签: jquery json

我有这个JSON数组

// Json array
var productList = {"products": [
    {"description": "product 1", "price": "9.99"},
    {"description": "product 2", "price": "9.99"},
    {"description": "product 3", "price": "9.99"}
]
};

我希望它循环浏览列表视图,但不知道如何执行此操作 到目前为止我能做的就是一次列出一个项目。此外,我只能列出产品而不是产品=价格。 jQuery论坛inst帮助...谢谢!!

这是代码的其余部分

function loadList() {
//  var list = document.getElementById('productList');
    var list = $("#productList").listview();

    var listItem = document.createElement('li');
    listItem.setAttribute('id', 'listitem');

    listItem.innerHTML = productList.products[0].description;

    $(list).append(listItem);
    $(list).listview("refresh");

和HTML文件

<html xmlns:f="http://www.lipso.com/f" xmlns:l="http://www.lipso.com/v2/lml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<head>
    <title>Page Title</title>
    &meta;
    <script src="@=site.cfg.resources.url@/test.js"></script>
</head>
<body onLoad="loadList()">
<div data-role="page">
    <div data-role="header" id="header">
        <h1>Dynamic Product List</h1>
    </div>
    <div data-role="content" id="content">
        <ul id="productList" data-role="listview" data-inset="true" data-theme="c" data-dividertheme="b">
        </ul>
    </div>
</div>
</body>
</html>

4 个答案:

答案 0 :(得分:13)

由于您已经在使用jQuery,为什么不使用$.each() function

而不是这段代码:

var listItem = document.createElement('li');
listItem.setAttribute('id', 'listitem');

listItem.innerHTML = productList.products[0].description;

$(list).append(listItem);

使用此:

$(productList.products).each(function(index){
    $(list).append('<li id="listitem">' + this.description + " = " + this.price + '</li>');
});

答案 1 :(得分:3)

查看jQuery.each()

$.each(productList.products, function(index, value) {
   $(list).append('<li>' + value.description + ': ' + value.price + '</li>');
});

答案 2 :(得分:0)

使用下面描述的“JSON数组”或更好的命名JavaScript对象,您可以使用for循环遍历它。 productlist是一个包含数组的对象,此数组中的每个元素都是一个包含2个属性或变量(描述和价格)的对象。可以使用从0开始并在数组lenght - 1结束的典型for循环来迭代数组....每个数组元素中的对象可以通过使用“for(key in object)”表示法进行迭代。

// Json array
var productList = {"products": [
    {"description": "product 1", "price": "9.99"},
    {"description": "product 2", "price": "9.99"},
    {"description": "product 3", "price": "9.99"}
]
};

以下是迭代Javascript对象的示例。

for (var i = 0; i < productList.products.length; i ++) {
  for (var key in productList.products) {
    alert(key + ":" + productList.products[key]);
  }
}

答案 3 :(得分:0)

我觉得你真正需要的是.tmpl插件来构建你的json数据列表:

http://api.jquery.com/jquery.tmpl/