JQTouch - A qualquer momento, o carregamento ocorre, adicione uma classe de carregamento?

StackOverflow https://stackoverflow.com/questions/2634473

Pergunta

Estou usando o JQTouch e, no JQTouch, vários dos links estão sendo carregados via Ajax e depois deslizando. O problema é que não há indicação de carregamento fornecida aos usuários.

Eu gostaria de uma maneira de adicionar uma classe de carregamento com um spinner de Ajax, sempre que a chamada Ajax estiver carregando, e remover a classe quando o carregamento estiver pronto e a página é exibida.

Alguma ideia?

Foi útil?

Solução

Este é o comportamento básico se seus links forem elementos li class = "seta". Como você está exibindo seus links e onde deseja que o girador de carregamento seja exibido?

Outras dicas

A resposta do showPageByHref () está parcialmente correta.

Mas, em vez de

$('body').append('<div id="loadinginprogress">Loading...</div>');

Você precisa

$('.current').append('<div id="loadinginprogress">Loading...</div>');

O corpo é geral demais para o JQTouch, precisa ser específico para o Div-Page atualmente exibido

ShowPageByHref () Função no JQTouch JS é um bom começo. Eu o adicionei diretamente na chamada do Ajax, para que a espera não piscará quando você clicar no link que já está carregado etc.

Em resumo - adicione o carregamento Div (ID carregando oProgress em exmaple) logo antes da chamada do Ajax e remova posteriormente o "sucesso" ou "erro". A seção de chamadas do Ajax seria algo assim (reduziu -a):

function showPageByHref(href, options) {
...
if (href != '#'){
    $('body').append('<div id="loadinginprogress">Loading...</div>');
    $.ajax({
        url: href,
        data: settings.data,
        type: settings.method,
        success: function (data, textStatus) {
            $('#loadinginprogress').remove()
            var firstPage = insertPages(data, settings.animation);
            if (firstPage)
            {
                if (settings.method == 'GET' && jQTSettings.cacheGetRequests && settings.$referrer)
                {
                    settings.$referrer.attr('href', '#' + firstPage.attr('id'));
                }
                if (settings.callback) {
                    settings.callback(true);
                }
            }
        },
        error: function (data) {
            $('#loadinginprogress').remove()
            if (settings.$referrer) settings.$referrer.unselect();
            if (settings.callback) {
                settings.callback(false);
            }
        }
    });
}
...
}

CSS para carregar Div seria algo como:

#loadinginprogress {
    -webkit-border-radius: 10px;
    background-color: rgba(0,0,0,.5);
    color: white;
    font-size: 18px;
    font-weight: bold;
    height: 80px;
    left: 60px;
    line-height: 80px;
    margin: 0 auto;
    position: absolute;
    text-align: center;
    top: 120px;
    width: 200px;
    z-index: 5000;
}

Obrigado por suas postagens diferentes. Eles me ajudaram muito.

Eu tenho uma solução para propor sem corrigir o código JQTouch no qual o JQTouch confia. Ele usa recursos do JQuery Ajax.


$(document).ready(function() {
...
  $('#jqt').ajaxStart(function() {
    console.log("ajaxStart");
    ...
  }).ajaxSuccess(function() {
    console.log("ajaxSuccess");
    ... 
  }).ajaxError(function() {
    console.log("ajaxError");
    .... 
  });
....
});

Mais detalhes disponíveis em esta página do documento jQuery.

Você pode adicionar um manipulador de eventos personalizado e acionar o carregamento.gif sempre que o clique no elemento específico era feito.

Acabei de responder de Darin Parker pergunta. Basta dar uma olhada que pode ajudá -lo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top