jQuery 自动完成:如何显示动画 gif 加载图像

Posted

技术标签:

【中文标题】jQuery 自动完成:如何显示动画 gif 加载图像【英文标题】:jQuery autocomplete: How to show an animated gif loading image 【发布时间】:2011-05-28 05:43:24 【问题描述】:

我正在使用结合 ajax 的 jQuery AutoComplete 插件。您知道在执行 ajax 搜索时如何显示进度指示器吗?

这是我当前的代码。

<script type="text/javascript">
    $("#autocomplete-textbox").autocomplete('http://www.example.com/AutoComplete/FindUsers');
</script>

<div>
    <input type="text" id="autocomplete-textbox" />
    <span class="autocomplete-animation"><img id="ajaxanimation" src="../img/indicator.gif")"/></span>
</div>

FindUsers URL 在内容中返回一个用户列表。

【问题讨论】:

您能否显示发送到浏览器的实际标记/代码,即没有那些 Ruby/ASP/whatever &lt;% %&gt; 标记? @Marcel:我已经编辑了帖子 里面还有一个%&gt;;是偶然的,还是这导致了问题? 【参考方案1】:

自动完成功能已经添加了可用于此的ui-autocomplete-loading 类(在加载期间)...

.ui-autocomplete-loading  background:url('img/indicator.gif') no-repeat right center 

【讨论】:

当您使用 ThemeRoller 时,加载 gif 相关信息会从下载中删除。 bugs.jqueryui.com/ticket/6046 我认为这是一个比接受的答案更好的解决方案,因为它说明了搜索没有返回结果的情况。 由于图片不在主题滚轮下载中,请从这里获取:ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/smoothness/… FWIW 动画不适用于自动完成的基于本地(大)数组的源(加载异步)。大概是因为在搜索发生时,没有其他任何东西可以做任何事情。例如:jsbin.com/EmikobU/1/edit @ChrisKimpton :在您粘贴动画作品的 jsbin 中搜索时,我没有发现任何问题(使用最新的 FF)。【参考方案2】:
$("#autocomplete-textbox").autocomplete
(
search  : function()$(this).addClass('working');,
open    : function()$(this).removeClass('working');
)

其中 CSS 类的工作定义如下:

.workingbackground:url('../img/indicator.gif') no-repeat right center;

编辑

Sam 的answer 是解决问题的更好方法

【讨论】:

使用 ui-autocomplete-loading 类更可取,因为当没有返回结果时,此指示器会一直困扰用户 response: function() - 搜索完成后触发【参考方案3】:

如果没有结果无效,您可以这样做:

$("input[name='search']").autocomplete(
...,
select: function( event, ui ) 
action show image
   
).data( "autocomplete" )._renderItem = function( ul, item ) 
action hide image

【讨论】:

以上是关于jQuery 自动完成:如何显示动画 gif 加载图像的主要内容,如果未能解决你的问题,请参考以下文章

如何创建加载动画[关闭]

如何延迟从页面加载开始显示Gif?

LabVIEW如何加载显示GIF动画

如何使用 jQuery 显示“忙碌”指示器?

使用 JQuery 在 DIV 中显示繁忙指示器

如何实现图片加载中,会有一个圈圈在动的效果