last.fm APIからの特定の場所(この例ではマドリード)のイベントを表示するテーブルがあります。AJAXでデータを取得することはできますが、問題は、ヘッダーがテーブルの下部に配置される方法で、テーブルの入力が厄介であるということです。
これが私のJQueryです:
$.fn.getEvents = function(location) {
var onComplete = function() {
//$('#eventtbl').jExpand();
$('#evttbldiv').fadeIn(250);
};
var $this = $(this);
var container = $this.html();
this.each(function() {
$.getJSON(
settings.PHP_REQUEST_URL,
{
method : "geo.getEvents",
api_key : settings.LASTFM_APIKEY,
location : location,
distance : settings.MAX_DISTANCE,
format : "json"
},
function(data) {
$.each(data.events.event, function(i, item){
event = item.title;
headliner = item.artists.headliner;
venue = item.venue.name;
date = item.startDate;
if(i != 0) $('.headers', $this).remove();
$this.append(container);
var $current = $this.children(':eq('+i+')');
$current.find('[class=lfm_event]').append(event);
$current.find('[class=lfm_headliner]').append(headliner);
$current.find('[class=lfm_venue]').append(venue);
$current.find('[class=lfm_date]').append(date);
if(i == (settings.MAX_TRACKS - 1)){
onComplete.call(this);
}
});
}
);
});
};
これが私のテーブルHTMLです:
<div id="evttbldiv">
<table id="eventtbl">
<tr class="headers">
<th>Evento</th>
<th>Artista principal</th>
<th>Local</th>
<th>Data</th>
<th></th>
</tr>
<tr class="rowdata">
<td class="lfm_event"></td>
<td class="lfm_headliner"></td>
<td class="lfm_venue"></td>
<td class="lfm_date"></td>
<td><div class="arrow"></div></td>
</tr>
<tr class="rowinfo">
<td colspan="5">
hello
</td>
</tr>
</table>
</div>
そして、これが私がメソッドを呼び出す方法です:
$('#eventtbl').getEvents('madrid');
ここでページをライブで見ることができます。
私がやりたいのは、上部にヘッダーがあり、でデータを取得すると$this = $(this)
、ヘッダーも取得することです。ヘッダーをそのまま維持し、ヘッダーの後にテーブルの各行を挿入する方法はありますか?現在のコードでは、テーブル全体を取得してから、最初の行でない場合はヘッダーを削除しています。これはかなり非効率的で、ご覧のとおり、テーブルを台無しにしてしまいます。