-1

我从Sharks with Lazers中获取了这段代码,稍作修改:

$(function(){
  var key="My key";
  var url="http://api.songkick.com/api/3.0/search/artists.json?query=" + userSearch + "&apikey=" + key + "&jsoncallback=?"; 
  $.getJSON(url,function(json){ 
    $.each(json.resultsPage.results.artist,function(i,result){
      if(i==0){
        artist_url="http://api.songkick.com/api/3.0/artists/" + result.id + "/calendar.json?apikey=" + key +"&jsoncallback=?";
        $.getJSON(artist_url,function(data){ 
          $.each(data.resultsPage.results.event,function(i,event){
            for (prop in event) {
              if (!result.hasOwnProperty(prop)) {
                continue; 
              }
              $("#Gigs").html("<li>" + event[prop]);
            }
          })
        })           
      };
    }); 
  });
});

if (result.displayName=="an_artist_name") 对我不起作用,所以 if(i==0) 似乎可以作为一种解决方法。在原文中,我遇到问题的代码是:

$("#songkick").append("<li>" + prop + ". " + event[prop]);

我已将其修改为:

$("#Gigs").html("<li>" + event[prop]);

Gigs 是我希望数据出现的元素的 id。我不想 append(),因为我希望每次后续搜索都清除以前的结果,但是当我将代码从 append() 更改为 html() 时,我只得到最后一个“prop”,这是为什么呢?

使用 append(),我得到 Gig Name、Songkick URI 和 Songkick ID,但是当我更改为 html() 时,它只给了我最后一个,Songkick ID。

4

1 回答 1

1

因为您每次使用时都会清除 html,html()就像您自己说过的那样。

只需使用追加,但在开始时使用:清除 html 一次, if (i == 0) { $("#Gigs").html(""); ... 其余时间使用 $("#Gigs").append("<li>" + event[prop]);
,但我还要指出您应该关闭<li>-tag

于 2013-06-02T13:46:51.373 回答