2013-09-25 65 views
1

我爲使用JQuery的網站設置了搜索功能。所有不匹配的結果都通過toggle()刪除,並且頁面上有很多數據。正如您可以成像,搜索需要幾秒鐘才能運行。jQuery等待Attr變更

要提供一些用戶反饋,表明搜索正在運行,我試圖用spinner gif替換img源。

這是我正在嘗試做的。在搜索按鈕的點擊()(或從搜索框中輸入):

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

我有Chrome開發人員工具打開,顯示網絡選項卡。只要我嘗試搜索,我就會看到註冊了spinner.gif的GET請求。問題是這個請求被設置爲「pending」,並且在search_contacts()正在運行時永遠不會前進。搜索完成的那一刻,Gif負載(好,304在5ms內沒有修改)。

什麼是讓jquery/javascript等待屬性更改在運行之前完成的正確方法?

回答

0

我想你會發現你的答案與jquery when()。

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

$.when(search_contacts(s)).done(function() { 

     $('div#search img').attr('src', '/static/img/search.gif'); 
}); 
+0

你沒發現這個鏈接你的答案? – pbenard

+1

不幸的是,這是行不通的。新的gif的GET始終保持「掛起」狀態,直到「search_contacts」函數完成。 (在你的代碼中,attr的變化和函數應該交換,但是它也沒有正確的行爲。) – fandingo