jquery加载动画问题

时间:2012-10-17 22:30:52

标签: css jquery

我正在尝试隐藏菜单,显示动画gif,隐藏gif,返回更新的菜单。 菜单消失并重新出现,但动画gif不会显示。

我做错了什么?

$(document).ready(function () {

    $("#menu").wijmenu({
        orientation: 'vertical'
    });

    $("#TDButtons a").click(function () {
        var href = $(this).attr("href");
        $('#menuAjax').hide(0, LoadAjaxContent(href));
        return false;
    });

    function LoadAjaxContent(href) {

        $.ajax({
                url: href,
                success: function (data) {
                    $("#menuAjax").html(data)
                        .addClass("loading")
                        .delay(5000)
                        .removeClass("loading")
                        .fadeIn('slow');

                    $("#menu").wijmenu({
                        orientation: 'vertical'
                    });
                }
            });
    }

如果您需要更多信息,请与我们联系。感谢

3 个答案:

答案 0 :(得分:2)

它没有显示您delay某些不是可排队动画的原因:

.addClass("loading")
.delay(5000)
.removeClass("loading")
.fadeIn('slow');

被解释为:

.addClass("loading")
.removeClass("loading")
.delay(5000)
.fadeIn('slow');

你可以这样做:

function LoadAjaxContent(href) {
    $.ajax({
          url: href,
          success: function (data) {
              $("#menuAjax").html(data).removeClass("loading").fadeIn('slow');
              $("#menu").wijmenu({ orientation: 'vertical' });
          }
    });
}

$("#TDButtons a").click(function (e) {
    e.preventDefault();
    var href = this.href;
    $('#menuAjax').addClass("loading").hide();
    LoadAjaxContent(href);
});

答案 1 :(得分:1)

您正在添加,一旦收到数据,就从元素中删除加载类。你应该使用ajaxStart和ajaxStop函数来完成它,它最终会在发送请求之前添加加载类,并在完成ajax操作后删除。

$(document).ready(function () {

    $("#menu").wijmenu({
        orientation: 'vertical'
    });

    $("#TDButtons a").click(function () {
        var href = $(this).attr("href");
        $('#menuAjax').hide(0, LoadAjaxContent(href));
        return false;
    });


    $.ajaxStart(function(){
         $("#menuAjax").addClass("loading");
    });
    $.ajaxStop(function(){
         $("#menuAjax").removeClass("loading");
    });
    function LoadAjaxContent(href) {

        $.ajax({
                url: href,
                success: function (data) {
                    $("#menuAjax").html(data)
                        .delay(5000)
                        .fadeIn('slow');

                    $("#menu").wijmenu({
                        orientation: 'vertical'
                    });
                }
            });
    }

答案 2 :(得分:1)

你的装载方向错误

您的加载类应在发送之前添加,然后再删除。你正在添加它,(并且正如roXon错误地使用.delay函数指出的那样)然后再次删除它,而不是给它任何时间显示它。

尝试这样的事情

$(document).ready(function () {
$("#menu").wijmenu({
    orientation: 'vertical'
});

$("#TDButtons a").click(function () {
    var href = $(this).attr("href");
    $('#menuAjax').hide(0, LoadAjaxContent(href));
    return false;
});

function LoadAjaxContent(href) {
    $("#menuAjax").addClass("loading")
    $.ajax({
            url: href,
            success: function (data) {
                $("#menuAjax").html(data)
                    //.delay(5000) Not needed!
                    .removeClass("loading")
                    .fadeIn('slow');

                $("#menu").wijmenu({
                    orientation: 'vertical'
                });
            }
        });
}