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
    });

助けてください、私は比較的Jqueryに不慣れで、何が悪いのか見当がつかないのです。

4

3 に答える 3

4

もう1つ上手くやります。データを削除して、後で追加し直しているようです。

htmlの前に追加するだけで、新しいデータが一番上に表示されます。

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

頑張ってください!

于 2012-05-25T21:34:53.717 に答える
0

1つのオプション

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");
  });
    
于 2012-05-25T21:39:59.813 に答える
0

同じIDを持つ複数の要素があるという問題が発生する可能性があるようです(これは許可されていません)。

このようにremove呼び出しのコンテキストを設定してみてください

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

これは、AJAX呼び出しから取得した要素とは異なるはずです。

これは完全にテストされておらず、暗闇の中でのショットです...

于 2012-05-25T21:40:08.740 に答える