2

我将 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/

4

3 回答 3

1

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

当您的代码迭代“数据”时,data.0.age评估为“未定义”(因为它是一个字符串并且不能有子级),并data.1.age评估为“0”。

也不需要在 中找到<ul><div>因为您已经给出了<ul>“网格”的 和 id(除非您想将此数据附加到每个<div>包含 a 的数据<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/

于 2013-01-20T19:27:05.423 回答
1

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

$.each(data, function(i,index) {
    if (index.hasOwnProperty('age')) {         
        $('div').find('ul').append('<li>'+index.age+'</li>');
    }
});
于 2013-01-20T19:27:33.507 回答
1

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

循环遍历数组中的each两个元素,并且由于 string 没有属性age,它创建了一个带有 text 的 LI undefined

您可以更改数据结构或在数组中查找objectorstring并做出相应的反应......不确定您想要做什么。不清楚你在做什么Paintings

于 2013-01-20T19:27:39.947 回答