我使用jQuery Mobile,jQuery和html创建了一个Web应用程序。它基本上是一个rss阅读器的网站。
$(document).ready(function() {
$('[data-role=button]').click(function() {
var $id = $(this).attr('id');
switch($id)
{
case 'news-button':
var type = 'news';
var url = '/tag/news/';
break;
//etc...
}
$.get('http://wiiuandmii.com' + url + 'feed/', function(data) {
$('#' + type + '-content').empty();
var i = 0;
$(data).find('item').each(function() {
i = i + 1;
$('#' + type + i).empty().remove();
var $item = $(this);
var html = '<li>';
html += '<a href="#'+ type + i + '">';
html += $item.find('image').text();
html += '<h3 style="color: #01acca;">' + $item.find('title').text() + '</h3>';
html += '<p>' + $item.find('pubDate').text() + '</p>';
html += '</a>';
html += '</li>';
$('#' + type + '-content').append($(html));
$('#' + type + '-content').find('img.attachment-thumbnail').removeClass().removeAttr('width').removeAttr('height');
$('#' + type + '-content').listview('refresh');
var page = '<div data-role="page" id="' + type + i + '" data-url="' + type + i + '">';
page += '<div data-role="header" data-theme="c" data-position="fixed"><a href="#home" data-rel="back" data-theme="b" data-icon="arrow-l">Back</a><h1 style="margin-top:0px; margin-bottom:0px;"><img src="images/header.png" title="Wii U and Mii" alt="Wii U and Mii"/></h1></div>';
page += '<div data-role="content" data-theme="c" class="main-' + type + i + '">';
page += '<h1 style="color: #01acca;">' + $item.find('title').text() + '</h1>';
page += '<p>' + $item.find('dc:creator').text() + '</p>';
page += $item.find('desc').text();
page += '</div>';
page += '<div data-role="footer" data-theme="c"></div>';
page += '</div>';
$('body').append($(page));
var test = '#' + type + i;
$(test).page();
});
});
});
});
当点击主页上的按钮时,页面转换到#news
页面就好了。问题是,当加载内容时,#news
页面的内容部分保持空白约5秒钟。加载消息不会出现。当所有内容都已加载时,加载消息应显示在#home
页面上,然后在填充后转换到#news
页面。
我是否因为我想要的效果而触发了错误事件上的内容加载,如果是,我应该使用哪个事件?
2011年3月30日编辑
我设法让页面转换等到列表在转换之前已完全加载,但加载消息仍然没有出现。
我用过:
$('#news').live('pagebeforeshow',function(event){
$.mobile.showPageLoadingMsg();
而不是文档就绪和.click
我用过:
$.ajax({
url: 'http://wiiuandmii.com' + url + 'feed/',
async: false,
success:function(data){
而不是.get()
答案 0 :(得分:3)
虽然已经有一个已接受的答案,但我想补充说我遇到了同样的问题,我解决了将showPageLoadingMsg
调用从pagebeforeshow
移到pageshow
处理程序的问题。希望这有帮助
答案 1 :(得分:0)
github-jQM论坛上的一位成员建议以下解决方法对我有用。注意,我使用的是jQM 1.0b1。
$('。ui-loader h1')。text('my custom loading msg ..');