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

我会做一个更好的。看起来您正在删除数据,然后再将其添加回来。

如果您只是添加到 html,则新数据将位于顶部。

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

祝你好运!

于 2012-05-25T21:34:53.717 回答
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");
  });
    
于 2012-05-25T21:39:59.813 回答
0

似乎您可能会遇到多个具有相同 ID 的元素的问题(这是不允许的)。

尝试像这样为删除调用设置上下文

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

这应该将它与您从 AJAX 调用返回的元素区分开来。

这是完全未经测试的,是在黑暗中拍摄的……

于 2012-05-25T21:40:08.740 回答