今Youtubeのステータス情報を取得する練習をしているのですが
例えば
<html>
<ul>
<li data-key="Youtube情報"></li>
<li data-key="Youtube情報"></li>
・
・
</ul>
<script>
$('ul li').each(function(){
var key = $(this).data('key');
var url = "http://gdata.youtube.com/feeds/api/videos/"+key;
var options = {
"alt":"json",
"v": 2
};
$.get(url,options,function(rs){
var f = rs.entry;
console.log(f['yt$statistics']['viewCount']);
$("ul li").text(f['yt$statistics']['viewCount']);
},"json");
});
として連続して処理させたいのですがconsole.logではそれぞれの情報を取得しているのですが結果は1つの情報しか反映してくれません
例:viewCount= 123, viewCount= 456 →結果 すべてのリストに123が入ってしまう
$.getはループ処理をかけることができないのでしょうか?よろしくお願いします
(for文でも同様のことが起きました)
$('ul li').each(function(){ var li = $(this); var key = li.data('key'); var url = "http://gdata.youtube.com/feeds/api/videos/"+key; var options = { "alt":"json", "v": 2 }; $.get(url,options,function(rs){ var f = rs.entry; console.log(f['yt$statistics']['viewCount']); li.text(f['yt$statistics']['viewCount']); },"json"); });
こういうことでしょうか?
$(this)を一度変数に退避してあげてください。