JQTOUCH - 无论何时加载,添加一个加载类?

时间:2010-04-14 02:19:07

标签: iphone web-applications jqtouch

我正在使用JQTOUCH,在JQTOUCH中,有几个链接正在通过AJAX加载然后滑入。问题是没有向用户提供加载指示。

我想要一种方法来添加带有AJAX微调器的Loading类,当加载ajax调用时,并在加载完成后删除类,并显示页面。

有什么想法吗?

6 个答案:

答案 0 :(得分:3)

showPageByHref()答案部分正确。

但是,而不是

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

你需要

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

正文对于jqtouch来说过于笼统,需要特定于当前显示的DIV页面

答案 1 :(得分:2)

jqtouch中的showPageByHref()函数是一个很好的开始。我将其添加到ajax调用中,因此当您单击已加载的链接等时,请等待不会闪烁。

简而言之 - 在ajax调用之前添加加载div(在exmaple中为id loadinginprogress),然后删除“success”或“error”。 ajax调用部分看起来像那样(缩短它):

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);
            }
        }
    });
}
...
}

用于加载div的css类似于:

#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;
}

答案 2 :(得分:1)

如果您的链接是li class =“arrow”元素,则这是基本行为。你是如何显示链接的,以及你希望加载微调器显示在哪里?

答案 3 :(得分:1)

感谢您提供不同的帖子。他们帮助了我很多。

我有一个解决方案,建议不修补jQTouch所依赖的jQtouch代码。 它使用jQuery ajax功能。


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

this jQuery doc page中提供了更多详细信息。

答案 4 :(得分:0)

您可以添加自定义事件处理程序,并在每次单击特定元素时触发loading.gif。

答案 5 :(得分:0)

我刚刚回答了达林帕克的question。看看它可能会对你有帮助。