在JQuery加载()之前运行动画

在JQuery加载()之前运行动画,jquery,ajax,load,Jquery,Ajax,Load,我试图利用JQuery的load()函数,但我不明白为什么在加载请求之前不会发生动画 例如,如果我有一个脚本,上面写着: $('#clickme').click(function() { $('#content').slideUp(500); $('#content').slideDown(500); }); 然后,事情就这样发生了。它向上滑动,然后向下滑动。但是,如果我在这两行之间放置一个load()函数,它将完全忽略第一行动画,只对其余行执行 $('#clickme').

我试图利用JQuery的
load()
函数,但我不明白为什么在加载请求之前不会发生动画

例如,如果我有一个脚本,上面写着:

$('#clickme').click(function() {
    $('#content').slideUp(500);
    $('#content').slideDown(500);
});

然后,事情就这样发生了。它向上滑动,然后向下滑动。但是,如果我在这两行之间放置一个
load()
函数,它将完全忽略第一行动画,只对其余行执行

$('#clickme').click(function() {
    $('#content').slideUp(500);
    $('#content').load('myotherpage.php').hide();
    $('#content').slideDown(500);
});

为什么会这样?我尝试在操作上放置一个
delay()
,但没有成功。我能做些什么来防止这种情况发生,这样我的活动就会有一个很好的进出效果


非常感谢,因此

尝试在
slideUp
函数的回调内部使用
load

$('#content').slideUp(500 ,function() {
    $('#content').load('myotherpage.php').hide();
});
试试这个:

$('#content').slideUp(500).load('myotherpage.php', function () {
    $('#content').slideDown(500);
});

但是,它确实可以正确地滑动,因为.load清空了元素,它看起来好像是立即发生的,因为元素的高度突然变为0+填充

我建议不要使用。请在此处加载:

$('#clickme').click(function() {
    // get data
    var request = $.get("myotherpage.php");
    $('#content').slideUp(500,function(){
        // when request is done AND the element is hidden, apply content and slide it back down.
        request.done(function(html){
            $('#content').html( $.parseHTML(html) ).slideDown(500);
        });
    });
});

这将导致只要请求时间少于500毫秒,slideUp和slideDown之间就不会有延迟。

将加载放在
slideUp
回调中,并将
slideDown
放在加载回调中(因为它是异步的)


他们可能正在同步运行。我一直认为JQuery接二连三地接受了订单……不错。这是一个很好的建议。加载后,我将slideDown()函数嵌套为回调函数,确保一切正常。将标记为已接受。谢谢
$(document).ready(function () {

    $('#clickme').click(function () {
        $('#content').slideUp(500, function () {
            $('#content').load('myotherpage.php', function () {
                $('#content').slideDown(500);
            });
        });
   });
});