2012-12-12 118 views
1

我在chrome中遇到了一個非常奇怪的問題。執行之後調用事件後調用的jquery DOM事件

我的代碼是

$('#import').text("Importing..."); 
$('#import img').removeClass("hidden"); 

Server.postService("tests", row_datas, function(data) { 
    // some stuff here 
}); 

文字和隱藏類職位的行動已經被執行之後被去除。代碼在firefox中工作正常。

+1

有沒有機會在'Server'「stuff」中使用ajax? – crowjonah

+0

你是怎麼調用這段代碼的? – epascarello

+2

在像http://jsfiddle.net這樣的地方提供演示確實有助於深入研究這個問題。我猜猜Server.postService()是服務器端方法嗎?瀏覽器實際上在源代碼中獲得了什麼? –

回答

1

唯一需要的是

Server.async = true 
服務器調用之前

0

異步函數按照外觀順序觸發,但按照完成時的順序返回。對於那些簡單的textremoveClass方法,返回速度比您使用Server對象時要緩慢得多,但我認爲這是可能的。如果你需要在postService之前發生前兩行,你可以試試jQuery的deferred.promiseHere's a fiddle展示的潛力,一些代碼來檢查:

function firstThing(){ 
    var dfd = new jQuery.Deferred(); 
    $('#import').text("Importing...");  
    $('#import img').removeClass("hidden"); 
    dfd.resolve(); 
} 

$.when(firstThing()).then(
    function() { 
     Server.postService("tests", row_datas, function(data) { 
      // some stuff here 
     }); 
    } 
) 

作爲一個側面說明,你的代碼的邏輯是有問題的,通過設置的#importtext,無論imghidden類不會在那裏現在,但這可能就在這一點上。

更新

關注你的迴應我的評論詢問你使用Ajax,我建議你閱讀有關async option,看看你是如何做的可能會或可能不會被阻塞事件是什麼。

我也建議閱讀jQuery ajax回調,特別是errorsuccesscomplete(現在使用jQuery 1.8+,faildonealways)。

+0

感謝您的回覆crowjonah。謝謝你的支持,但它的唯一樣本,我沒有在實際代碼中做過這樣的事情。 – vipulsharma

+0

這個ans不適合我的人 – vipulsharma

相關問題