使用jquery .append()</li>创建extra <li>

时间:2013-01-20 19:23:31

标签: jquery json

我将json响应附加到html元素。代码非常简单

HTML

<div>
  <ul id='grid'></ul>
</div>

的jQuery

data = ["Paintings",{ "age":0}]

$(function() {
   $.each(data, function(i,index) {         
     $('div').find('ul').append('<li>'+index.age+'</li>');
  });
});

输出看起来像这样

未定义

0

undefined来自哪里?

我尝试使用它删除未定义的

$('#grid').children(':first-child').remove('li');

但它删除了“0”和未定义。

http://jsfiddle.net/ccUKH/

3 个答案:

答案 0 :(得分:1)

您的数据是一个包含两个元素的数组,字符串'Paintings'和对象{age:0}

当你的代码迭代'数据'时,data.0.age评估为'未定义'(因为它是一个字符串,不能有子项),data.1.age的计算结果为'0'。

也无需在<ul>中找到<div>,因为您已将<ul>和id设为“网格”(除非您想将此数据附加到<div> 1}}包含<ul>)。

尝试重组数据,并直接定位<ul>,如下所示:

data = {"Paintings" : [{"age":0}, {"age":5}]};

$.each(data.Paintings, function(i,index) {
  $('#grid').append('<li>'+index.age+'</li>');
});

http://jsfiddle.net/ccUKH/2/

答案 1 :(得分:1)

undefined来自"Pages".age。试试这个:

$.each(data, function(i,index) {
    if (index.hasOwnProperty('age')) {         
        $('div').find('ul').append('<li>'+index.age+'</li>');
    }
});

答案 2 :(得分:1)

data是一个数组,数组的第一个元素是字符串Paintings。数组的第二个元素是具有属性age的对象。

each遍历数组中的两个元素,因为字符串没有属性age,所以它会创建一个带有文本undefined的LI。

您可以更改数据结构或在数组中查找objectstring并做出相应的反应......不确定您要执行的操作。不清楚你在使用Paintings

做了什么