2011-06-21 90 views
2

我需要一個很好的轉換,其中刪除第一行並追加到表中新項目。jquery刪除表中的第一行

$.getJSON('/Home/GetRecentPosts/', { count:1 }, function(data) { 
     $('#recentPosts tr:first').fadeOut(2000); 
     $('#recentPosts').append($('<tr><td>'+data[0].SchoolName+'</td></tr>').hide().fadeIn(2000)); 
    }); 

這是我第一次執行getJson。請幫忙。 謝謝

+0

如何/你在哪裏調用此方法?您不會對服務器返回的'data'執行任何測試,而是直接訪問'data [0]'。是否保證每次服務器發送至少包含一個元素的JSON集合? –

回答

5

我試圖想要的功能,每個項目劃分到一個單獨的行。如果這不是你所追求的,那麼希望它不應該難以調整下面的代碼以適應你的需求。

$.getJSON(
    '/Home/GetRecentPosts/', 
    { count:1 }, 
     removeFirstRowAndAppendNewItem(data) 
    ); 

function removeFirstRowAndAppendNewItem(data) 
{ 
    console.log("in callback"); // to confirm we have reached here 
    $('#recentPosts tr:first').fadeOut(2000, function() { 
     $('#recentPosts tr:first').remove(); 
     newRow = $('<tr><td>'+data[0].SchoolName+'</td></tr>').hide(); 
     $('#recentPosts').append(newRow) 
     newRow.fadeIn(2000)); 
    }); 
} 

基本上:

  • 淡出第一行
  • 從DOM
  • 創建一個新元素刪除第一行中,用造型隱藏它
  • 追加新元素到表
  • 淡入新元素

(注:這是可能的這些步驟結合在一起)

+0

australis:是否有一種方法可以在刪除第一個行後爲其餘行添加slideUp轉換以添加更好的效果?謝謝 – ShaneKm

+0

Shane:我可能會誤解,但我認爲唯一的方法是將一行div嵌入行中,然後滑動該行。你有這個運氣嗎?如果不是,我會嘗試挖掘一個例子。 – australis

1

試試這個。

$('#recentPosts tr:visible:first').fadeOut(2000); 

因爲

$('#recentPosts tr:first').fadeOut(2000); 

會隱藏在第一JSON調用的第一個元素。現在,您正在嘗試再次淡出第一個看不見的元素。所以你可以使用:visible過濾器來達到預期的效果。

另外,如果你想刪除的DOM元素,試試這個

$('#recentPosts tr:first').fadeOut(2000, function(){ 
    $(this).remove(); 
}); 
0

試試這個:

$.ajax({ 
beforeSend: function(){ 
// Handle the beforeSend event 
}, 
complete: function(){ 
// Handle the complete event 
} 
// ...... 
});