我不知道这种技术是否错误,但我真的只希望新内容在满载时消失。看来beforeSend和完成发送对时间没有影响。即使在向上滑动之前,新内容也会淡出,例如

我还不太熟悉ajax,您必须知道。

这是我的代码:

$(function(){
    var replacePage = function(url) {

        $.ajax({
            url: url,
            type: 'get',
            dataType: 'html',
            beforeSend: function() {
                $(".menue").slideUp();
            },
            success: function(data){
                var dom = $(data);
                var html = dom.filter('#content').html();

                $('#content').html(html);

            },
            complete: function(){
                $("#content").fadeIn();
            }
        });
    }

    $('nav a').live('click', function(e){
        history.pushState(null, null, this.href);
        replacePage(this.href);
        e.preventDefault();
    $("#content").hide();
    });

    $(window).bind('popstate', function(){
        replacePage(location.pathname);
    });
});

最佳答案

请尝试以下操作:

success: function(data){
           var dom = $(data);
           var html = dom.filter('#content').html();
           $(".menue").promise().done(function(){
                $('#content').html(html).fadeIn()
           })
        },


或者您可以使用slideUp()的回调函数,该函数在动画完成后执行:

$(".menue").slideUp('slow', function(){
    $.ajax({
        url: url,
        type: 'get',
        dataType: 'html',
        success: function(data){
            var dom = $(data);
            var html = dom.filter('#content').html();
            $('#content').html(html).fadeIn()
        }
    });
 })


请注意,不建议使用live(),而可以改用on()方法。

关于jquery - Ajax:仅在完全加载时淡入新内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11597535/

10-09 07:22