Загрузка javascript и ajax, затем эффекты

У меня есть код JavaScript, посредством которого я пытаюсь загрузить список с отдельной страницы (используя функцию load() jQuery), выдвинуть текущий список и вставить новый список.

Теперь я не хочу, чтобы старый список скользил до тех пор, пока новый список не будет полностью загружен. Может кто-нибудь сказать мне, как этого добиться, не глядя, как сценарий имеет вторые мысли во время выполнения..

Спасибо.

редактировать

$('.cont a').click(function() {
    var page = $(this).attr('href');
    $('.p-list').prepend('<div class="loader">&nbsp;</div>');
    $('.p-list').load(page +" .proj").hide().fadeIn();
    return false;
});

Извините, что не вставил код. Однако я не знаю, насколько это поможет...

2 ответа

Решение

Это должно сделать это:

$("#someDiv").slideUp("slow").load('blah.html', function() {
    $(this).slideDown("slow");
});

Если вы позвоните slideDown метод в обратном вызове load (или любой другой метод ajax), который обеспечит анимацию после заполнения элемента ответом.

РЕДАКТИРОВАТЬ: Чтобы применить это к вашему коду:

$('.cont a').click(function() {
        var page = $(this).attr('href');
        $('.p-list').prepend('<div class="loader"> </div>');
        $('.p-list').slideUp("slow").load(page +" .proj", function() {
             $(this).fadeIn("slow"); //or show or slideDown
        });
        return false;
});

Вы также можете попробовать это:

$("#someDiv")
    .slideUp("slow", function(){
        $(this).load('blah.html', function() {
            $(this).slideDown("slow");
        }
    );
});

Это сработало лучше для меня, когда вы загружаете страницу, как только эффект slideUp сделан.

Другие вопросы по тегам