2012-05-25 75 views
2
jQuery.get("ajax.php", function(data) 
    { 
     prev = $("#newsfeed").html(); //Remember what was in the newsfeed 
     $(data).find("div[id^='feed']").each(function() //Find every div starting with feed in AJAX response 
      { 
       alert('#' + $(this).attr("id")); //Works fine 
       $('#' + $(this).attr("id")).remove(); //Remove any existing div with same id - Not working 
      }); 
     $("#newsfeed").html(data + prev); //Append the AJAX response to the top of the page 
    }); 

請幫忙添加數據時刪除的div已經在頁面上,我relativly新jQuery和沒有線索什麼錯。jQuery的從阿賈克斯響應

+0

什麼的'警報( '#' + $(本).attr( 「ID」)的長度)的輸出;'?你可以簡寫成$('#'+ $(this).attr(「id」))。remove();'到'$(this).remove()' – mattytommo

+0

@mattytommo $(this) ,舊的是DOM的一部分,需要刪除。 –

+0

@KevinB啊,但不清楚他想刪除什麼:) – mattytommo

回答

4

我會做得更好。看起來您正在刪除數據,然後再將其添加回來。

如果你只是預先添加到html,新的數據將在頂部。

$("#newsfeed").prepend(data); 

祝你好運!

+0

謝謝。這現在看起來很明顯。 –

0

一個選項

var $newsfeed = $("#newsfeed"); 
var prev = $newsfeed.html(); 
$newsfeed.load("ajax.php").append(prev); 

另一種選擇

//register a clean event that will look for all ids that start with 'feed' 
//do not use '#feed***' selector, as it will the ID that it finds first, and then stop. 
     $("#newsfeed").on({"cleanIds":function(event){ 
//grab the divs 
      $(event.data.selector,"#newsfeed").each(function(index,elem){ 
//remove the id attribute altogether, or come up with a better way to renumber them 
//rip out the ID and throw it into the class for storage/usage 
      $(this).addClass($(this).attr("id")).removeAttr("id"); 
     }); 
     },null,{selector:"div[id^='feed']"}}); 

    $.get("ajax.php", function(data){ 
//prepend your stuff, then trigger the clean event. 
     $("#newsfeed").prepend(data).trigger("cleanIds"); 
    }); 
0

好像您可以通過運行到問題與具有相同ID的多個元素(這是不允許的)。

嘗試設置背景爲刪除呼叫這樣

$('#' + $(this).attr('id'), 'body').remove();

應該從您得到您的AJAX調用回元素區分。

這是完全未經測試,並在黑暗中拍攝...

+0

@Benjamin如果同一元素的重複ID是這種情況,你的代碼實際上會工作(我測試了它):) – mattytommo