我正在尝试一个按钮,它会在发出一系列ajax请求之前,将onclick应用于类加载(将光标设置为“等待”).
代码是:
$('#addSelected').click(function(){
$('body').addClass('loading');
var products = $(':checkBox[id^=add_]:checked');
products.each(function(){
var prodID = $(this).attr('id').replace('add_','');
var qty = $('#qty_' + prodID).val();
if($('#prep_' + prodID).val())
{
prodID += ':' + $('#prep_' + prodID).val();
}
// Have to use .ajax rather than .get so we can use async:false,otherwise
// product adds happen in parallel,causing data to be lost.
$.ajax({
url: '=base_url()?>basket/update/' + prodID + '/' + qty,async: false,beforeSend: function(){
$('body').addClass('loading');
}
});
});
});
我试着做
$('body').addClass('loading');
既在请求之前,又作为beforeSend回调,但是没有区别.
在firebug中,我可以看到直到请求完成后,body才获得加载类.
有任何想法吗?
我没有以我认为干净的方式进行此排序,但是我找到了解决方案.
如果我在var product …和}上加上setTimeout(function(){,1);在product.each块的末尾下方,该块将延迟,因此addClass首先发生.