loading
一連の 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
を取得できないことがわかります。loading
何か案は?
私はこれをクリーンであると考える方法でソートしていませんが、解決策を見つけました。
ブロックの末尾のsetTimeout(function(){
上と下に追加するvar products...
と、そのチャンクが遅延するため、最初に addClass が発生します。}, 1);
products.each