我从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。
答案 0 :(得分:1)
因为您每次使用html()
时都会清除html,正如您自己所说的那样。
只需使用append,但在开头使用以下内容清除html一次:
if (i == 0) { $("#Gigs").html(""); ...
其余的时间使用
$("#Gigs").append("<li>" + event[prop]);
但我还要指出你应该关闭<li>
- 标签