2011-04-13 34 views
0

我想循环从php脚本的结果到我的jquery朋友列表。似乎无法得到列表显示任何东西,但未定义,但如果我将它追加到身体它只显示数组的最后一个。我的代码是...jQuery的循环与HTML?

$(function() { 

    $('<div />').html('<div id="buddies" class="buddies" style="vertical-align:bottom"><div class="imheader">&nbsp;Online Favorites<span class="fr"><a href="#" id="exitlist">X</a></span></div><div class="imheader2"><div class="imheaderspan"><a href="#">Options</a></div></div><ul class="imwindow"><div id="myonlinefavs">' + FL() + '</div></ul></div><div id="chatbar" class="chatbar"><div id="ims"></div><div class="buddylist" id="buddylist"><center><a href="#" id="im-menu" class="im-menu">Favorites (<strong id="friendsonline">0</strong>)</a></center></div></div>').appendTo('body'); 

var imRoot = $("#im-menu"); 
var buddies = $("#buddies"); 
imRoot.click(function(){ 
    buddies.toggle(); 
    imRoot.blur(); 
    return(false); 
}); 
$("#exitlist").click(function(){ 
    buddies.toggle(); 
    imRoot.blur(); 
    return(false); 
}); 
$(document).click(function(event){ 
    if (buddies.is(":visible") && !$(event.target).closest("#buddies").size()){ 
     buddies.hide(); 
    } 
}); 

    function FL(){ 
     $.ajax({ 
      type: 'POST', 
      url: 'config/receive_buddylist.php', 
      cache: 'false', 
      dataType: 'json', 
      success: function(data){ 
       data && $.each(data, function(i, e){ 
        if (i == "buddylist") { 
         $.each(e, function (l, f) { 
          if(f.id != null){ 
           $('<div />').html('<li>' + f.n + '</li>'); 
          } 
         }); 
        } 
       }); 
      } 
     }); 

    } 
}); 

回答

5

问题是你在做$('body').html('<li>' + f.n + '</li>');它不断地覆盖数据。尝试使用append()

$('body').append('<li>' + f.n + '</li>'); 

我注意到您更新了一下您的代码。这是一个改造:

if(f.id != null){ 
    $('<div />').html('<li>' + f.n + '</li>').appendTo('body'); 
}