私は現在、次のコードでajax呼び出しにプリローダーgifを使用しています:
$(document).ajaxStart(function () {
var position = $('#parentDiv').position();
position.left += (($('#parentDiv').width() / 2) - ($('#bigPreloader').width() / 2));
position.top += (($('#parentDiv').height() / 2) - ($('#bigPreloader').height() / 2));
$('#bigPreloader').css(position).show();
$('#bigPreloader').show();
}).ajaxStop(function () {
$('#bigPreloader').hide();
});
上記のコードでは、#parentDivがページの大部分を占めており、プリローダーは250x250ピクセルで、#parentDivの中央に配置されています。
これは正常に機能しますが、ページ全体ではなく、特定の入力に関連付けられたajax呼び出しをいくつか追加しました。私は小さなプリローダー(14x14ピクセル)を持っており、それを適切な入力自体の中に入れる予定です。
ajaxStart内で、どのajax呼び出しが行われたかを判別する方法はありますか?または、複数のajaxStartを特定の要素にリンクさせる方法はありますか?
解決
$(document).ajaxSend(function (event, jqxhr, settings) {
if (settings.url.indexOf('LoadInputData') == -1) {
var position = $('#parentDiv').position();
position.left += (($('#parentDiv').width() / 2) - ($('#bigPreloader').width() / 2));
position.top += (($('#parentDiv').height() / 2) - ($('#bigPreloader').height() / 2));
$('#bigPreloader').css(position).show();
$('#bigPreloader').show();
} else {
$('#inputLoad').removeClass('notActive').addClass('isActive');
}
}).ajaxStop(function () {
if ($('#bigPreloader').is(':visible')) {
$('#bigPreloader').hide();
} else {
$('#inputLoad').removeClass('isActive').addClass('notActive');
}
});