发现了一个非常好的jQuery插件jQTouch。这个插件是帮助你方便开发iphone上的浏览器上的web程序。使它的操作像原生的Iphone程序有良好的界面和操作交互。
我使用了他帮朋友搞左个应用,你可以使用iphone或者ipod touch访问 http://www.goflytoday.com 就可以访问到该应用了。如果你没有iphone的话,可以使用Apple Safari浏览器去访问这个网址体验一下效果,其效果基本和iphone差不多,只是有小许细节不一样(google android的手机都可以,我用hero试过,速度比较慢)。其他浏览器就不行。
我使用的是jqtouch-1.0-beta-2-r109.zip这个版本。发现有一个bug。这个bug主要表现是当列表跳转的链接为空的时候,用户点击该链接的时候,连接会成另外一种状态后不会自动恢复原来的状态。
这个bug位于函数 showPageByHref。原来函数写法如下:
function showPageByHref(href, options) {
var defaults = {
data: null,
method: 'GET',
animation: null,
callback: null,
$referrer: null
};
var settings = $.extend({}, defaults, options);
if (href != '#')
{
$.ajax({
url: href,
data: settings.data,
type: settings.method,
success: function (data, textStatus) {
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) {
if (settings.$referrer) settings.$referrer.unselect();
if (settings.callback) {
settings.callback(false);
}
}
});
}
else if ($referrer)
{
$referrer.unselect();
}
}需要把把第463行修改成下边的写法就可以了。
else if (settings.$referrer)
{
settings.$referrer.unselect();
}这个bug已经向作者反映了。作者告诉我svn最新的版本已经把这个错误修改了。