2

私はいくつかのjsonをフェッチして返し、オブジェクトごとに新しいdivを作成しています。私は今、「これはあなたのものかもしれません!」の線に沿って何かを言うだけの最後のdiv(jsonからではない)を1つ追加しようとしています。

挿入してみました

$('section#fans').append('<div class="fan">new div</div>');

またはそのいくつかのバリエーション(after、appendChildなど)で、希望どおりに実行できません。現在、新しいdivが1つ追加されていますが、foreachが開始される前に、foreachのfadeIn遅延パターンには従いません。

foreachの後に同じ効果でdivを追加するにはどうすればよいですか?1つの最後のdivとして?それがjsonに属しているかのように、前のものと同じテンプレートにはなりませんが。

function get_fans(){

    $.ajax('http://localhost/facebook_app/selectFans/', {
        type : 'get',
        dataType: 'json',
        success : function (data) {
            $.each(data, function(index) {setTimeout(function(){

                var first_name = data[index].first_name;
                var location = data[index].location;
                var imagePath = data[index].image_path;

                var d = $('<div class="fan"><img src="http://localhost/uploads/' + imagePath + '" width="170" height="160" />' + first_name + ', ' + location +'</div>');
                $('section#fans').append(d);
                d.hide();
                d.fadeIn('50');

                }, 250*(index +1));


            });

            $('section#fans').append('<div class="fan">new div</div>');

        },
    });
}
4

1 に答える 1

1

「最終的な」挿入はすぐに実行され、他の挿入はタイムアウト後に実行されます。

交換できます

$('section#fans').append('<div class="fan">new div</div>');

setTimeout(function(){
    $('#fans').append('<div class="fan">new div</div>');
}, 250*(data.length +2));

他のすべてが行われた後に最後の挿入が行われるようにします。

$('section#fans')補足:使用しないでください$('#fans')。jQueryは高速document.getElementById関数を使用するため、これは高速になります。

于 2013-01-09T09:56:13.413 に答える