цикл jquery с html?

#jquery #html #arrays #loops

#jquery #HTML #массивы #циклы

Вопрос:

Я пытаюсь зациклить результаты из php-скрипта в свой список друзей jquery. Похоже, не удается заставить список отображать что-либо, кроме undefined , но если я добавлю его к телу, он покажет только последнюю часть массива. Мой код таков…

 $(function() {

    $('<div />').html('<div id="buddies" class="buddies" style="vertical-align:bottom"><div class="imheader">amp;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" ) amp;amp; !$( 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 amp;amp; $.each(data, function(i, e){
                    if (i == "buddylist") {
                        $.each(e, function (l, f) {
                            if(f.id != null){
                                $('<div />').html('<li>'   f.n   '</li>');
                            }
                        });
                    }
                });
            }
        });

    }
});
  

Ответ №1:

Проблема в том, что вы делаете $('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');
}