2012-12-12 81 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

相关问题