jQuery 等待 attr 更改

jQuery Wait for Attr Change

本文关键字:更改 attr 等待 jQuery      更新时间:2023-09-26

我使用 JQuery 为我的网站设置了搜索功能。所有不匹配的结果都通过 toggle() 删除,并且页面上有很多数据。正如您可以想象的那样,搜索需要几秒钟才能运行。

为了提供一些用户反馈,表明搜索正在运行,我正在尝试用微调器 gif 替换 img 源。

这就是我要做的。单击搜索按钮(或从搜索框中输入):

$('div#search img').attr('src', '/static/img/spinner.gif');
search_contacts(s);
$('div#search img').attr('src', '/static/img/search.gif');

我打开了 Chrome 开发者工具并显示"网络"标签页。一旦我尝试搜索,我就会看到微调器的 GET 请求.gif已注册。问题是此请求设置为"挂起",并且在search_contacts()运行时永远不会进行。搜索完成后,Gif 加载(嗯,304 毫秒内未修改)。

让 jquery/javascript 在运行函数之前等待属性更改完成的正确方法是什么?

我想你会用jquery when()找到答案。

文档:http://api.jquery.com/jQuery.when/

$.when( search_contacts(s) ).done(function() {
      $('div#search img').attr('src', '/static/img/search.gif');
});