无法确定何时使用JQuery隐藏和显示加载动画

时间:2011-05-27 21:50:54

标签: javascript jquery ajax animation loading

我有一个加载动画,我最初隐藏在application.js文件中:

$('#loading_field').hide();

我有一个自动填充字段,我希望动画在用户开始输入时显示,并在自动填充建议结果出现时消失。下面是我的jquery ui autocomplete插件的jquery代码:

$(".showable_field").autocomplete({
    minLength: 1,
    source: '/followers.json',
    focus: function(event, ui) {
       $('.showable_field').val(ui.item.user.name);
       return false;
    },
    select: function(event, ui) {
        var video_id = $('#video_id_field').val();
        var user_id = ui.item.user.id;
        $.post("/showable_videos.js", {video: video_id, user: user_id});
        $(':input','#new_showable_video').not(':button, :submit, :reset, :hidden').val('');
        return false;
    }
});
var obj = $(".showable_field").data('autocomplete');
obj && (obj._renderItem = function( ul, item ) {
    return $( "<li></li>" )
       .data( "item.autocomplete", item )
       .append( "<a>" + item.user.name + "</a>" )
       .appendTo( ul );
});

我应该在哪里显示和隐藏动画?

2 个答案:

答案 0 :(得分:4)

嗯,jQuery UI会在加载远程数据时自动将“ui-autocomplete-loading”类添加到您的输入中,因此最简单的方法是简单地将动画GIF作为背景图像添加到您的输入中当该类存在时输入。

这就是他们在remote-loaded example on jQueryUI.com中所做的事情(请注意,在此示例中,您必须再键入两个字符才能启动ajax调用)。

<style>
  .ui-autocomplete-loading { background: white url('images/ui-anim_basic_16x16.gif') right center no-repeat; }
</style>

答案 1 :(得分:2)

因为您正在使用AJAX加载建议,我认为这应该对您有用:

$('#loading_field').ajaxStart(function () {
  $(this).show();
}).ajaxStop(function () {
  $(this).hide();
});