Я пытаюсь получить кнопку, чтобы onclick применил к телу класс loading
(устанавливает курсор на "wait") перед выполнением серии запросов ajax.
Код:
$('#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
не получает класс loading
до тех пор, пока запросы не будут выполнены.
Есть идеи?
Я не сортировал это так, как считаю чистым, но я нашел решение.
Если я добавлю setTimeout(function(){
выше var products...
и }, 1);
ниже конца блока products.each
, этот чанк будет задержан, поэтому сначала добавится addClass.