2016-04-11 3 views
1

Можно передать div-id функции (show), а затем показать загружаемое изображение, которое охватывает весь div &, а затем передать то же самое div-id другой функции (скрыть) и скрыть загрузочное изображение, показанное над div. Я пытаюсь создать решение generic здесь & не ищу что-то вроде этого.Общая функция, отображающая значок загрузки по любому данному div

jQuery.ajaxSetup({ 
    beforeSend: function() { 
    $('#loaderDiv').show(); 
    }, 
    complete: function(){ 
    $('#loaderDiv').hide(); 
    }, 
    success: function() {} 
}); 

Я хочу показать один раз значок загрузки для каждого div. Я не хочу показывать только один большой div, который охватывает всю страницу. Пожалуйста помоги.

+0

Вы можете сделать класс в CSS, который перекрывает содержание, как вы хотите, а затем просто добавить/удалить этот класс. Один из многих вариантов. –

+0

Вы можете создать параметр, переданный в $ .ajax (url, settings), который идентифицирует селектор вашего целевого div. Затем вы можете использовать его в ajaxsetup, чтобы показать загрузчик на месте. – Steve

+0

@MariM: Как я могу рассказать классу css оверлей поверх другого div по позиции, высоте и ширине? – OpenStack

ответ

3

Используя настройку, заданную в $ .ajax (url, [settings]), вы можете изменить расположение загрузочного div.

$.ajaxSetup({ 
    beforeSend: function(xhr, settings) { 
     var $target = $(settings.targetSelector); 
     var $loading = $('#loaderDiv'); 
     $loading.css($target.position()); 
     $loading.width($target.width()); 
     $loading.show(); 
    }, 
    complete: function() { 
     $('#loaderDiv').hide(); 
    } 
}); 

//then later in a button click or whatever 
$.ajax('URL', { 
    targetSelector: "#DIV_TO_OVERLAY" 
}); 

https://jsfiddle.net/x3f8ntdv/

Смежные вопросы