2

我正在获取一些 json 并将其返回,为每个对象创建一个新的 div。我现在正在尝试添加一个最终的 div(不是来自 json),它只是说“这可能是你的!”。

我试图插入

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

或它的几个变体(之后,appendChild 等)并且无法让它按我的意愿执行。目前它添加了一个新的 div,但在 foreach 开始之前,它不遵循 foreach 所做的fadeIn 延迟模式。

我怎样才能让它在 foreach 之后添加具有相同效果的 div。作为一个最终的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')but $('#fans')。这会更快,因为 jQuery 将使用 fastdocument.getElementById函数。

于 2013-01-09T09:56:13.413 回答