1

我想从另一台服务器获取数据并将其显示在我的网站上。远程服务器使用 jsonp,所以我使用的是 jQuery。我的代码看起来像这样:

$.getJSON(json_url, function(data) {
  var items = [];
  $.each(data, function(key, val) {
    items.push("<li id=" + key + ">" + val + "</li>");
  });

  $( "<ul/>", {
    "class": "my-new-list",
    html: items.join("")
  }).appendTo("#my-id");
});

我想在一分钟后发出另一个请求以检查是否有新数据,以便我可以使用setInterval(main, 60000)或类似的东西。

但问题是当我得到新数据时,旧数据并没有被清除。所以我将拥有li具有新旧价值的元素。

我应该如何更改我的代码以清除旧数据?

4

6 回答 6

1

尝试:

$("#my-id").html($( "<ul/>", {
    "class": "my-new-list",
    html: items.join("")
}));
于 2013-10-24T07:21:27.123 回答
0

您正在使用appendTo因此旧数据不会被清除。

利用

 $("#my-id").html($( "<ul/>", {
  "class": "my-new-list",
  html: items.join("")
 }));

或清除使用

$("#my-id").html('')
于 2013-10-24T07:21:37.390 回答
0

使用 Jquery 删除

$("#my-id").remove();

您可以删除包含元素的数据并再次添加

于 2013-10-24T07:22:03.987 回答
0

在添加新项目之前清除您的<ul>with方法,如下所示:.empty()

$.getJSON(json_url, function(data) {
  var items = [];
  $.each(data, function(key, val) {
    items.push("<li id=" + key + ">" + val + "</li>");
  });

  $("#my-id").empty();

  $( "<ul/>", {
    "class": "my-new-list",
    html: items.join("")
  }).appendTo("#my-id");
});
于 2013-10-24T07:20:56.687 回答
0

放:

$("#my-id").empty();

在回调函数的开头。.appendTo顾名思义,它附加到元素而不是替换内容。

于 2013-10-24T07:21:11.827 回答
0

ul在附加li项目之前清除。您可以使用$('ul-id').empty()$('ul-id li').detach()

于 2013-10-24T07:23:32.283 回答