您的位置:首页 > 移动开发

jqmobi学习总结

2014-09-18 10:55 633 查看
最近在学习jQmobi的框架,写了一个小项目,遇到很多问题,现在将遇到的问题以及解决方法记录下来,方便以后查看和借鉴:

JqMobi简单介绍:

JqMobi是针对 移动设备开发的javascript框架,在2013年2月22日被 英特尔(intel)公司收购 改名为appframework,它主要有以下优点( 1.体积小  2.运行速度快  3.语法和Jquery相同,4.开发速度快),经测试
它在Android上要比jQuery快3倍,在 iOS上比jQuery快2.2倍,速度是JqueryMobile的3到5倍,速度和SenchaTouch差不多,它最大的缺点就是文档不易读。

由于文档不易读,所以很多问题不知道怎么解决,树根老师的视频看着还是很不错的,但是会有版本问题。

首先引入文件

2.1.0版本引入main.css和zppframework.css文件(必须)不能引入af.ui.css,他会修改很多样式导致你需要重写,同时新版2.1.0也不需要再引入这个了。

    <link rel="stylesheet" type="text/css" href="../appframework/css/main.css"
 />

    <link rel="stylesheet" type="text/css" href="../appframework/css/appframework.css"  />

icon.css用到则引入,

    <link rel="stylesheet" type="text/css" href="../appframework/css/icons.css" />

下面两个js文件必须

    <script type="text/javascript" charset="utf-8" src="../appframework/appframework.js"></script>

    <script charset="utf-8" src="../appframework/ui/appframework.ui.js"></script>

下面的js文件视情况引入

<script src="../appframework/plugins/af.css3animate.js"></script><!--影响动态效果-->

<script src="../appframework/plugins/af.scroller.js"></script><!--必须,PC页面显示-->

<script src="../appframework/plugins/af.touchLayer.js"></script><!--必须。手机页面显示-->

<script src="../appframework/plugins/af.touchEvents.js"></script><!--左右pannel切换-->

注意以下几点:

1.jQmobi里面
a 链接不适用,可以写成js链接 onclick="script:window.location.href="URL",

或者绑定相关js事件  

 $("#id").bind('click',function(){

        window.location.href=''URL';

    });

2.实现鼠标拖动页面相关代码:

//可以用鼠标拖动屏幕

function loadedPanel(what) {

    //We are going to set the badge as the number of li elements inside the target

    $.ui.updateBadge("#aflink", $("#af").find("li").length);

    }

function unloadedPanel(what) {

    console.log("unloaded " + what.id);

    }

if (!((window.DocumentTouch && document instanceof DocumentTouch) || 'ontouchstart' in window)) {

    var script = document.createElement("script");

    script.src = "../appframework/plugins/af.desktopBrowsers.js";

    var tag = $("head").append(script);

    }

注意af.desktopBrowse.js的目录要正确。

3.控制pannel左右滑动转场代码

/*左右转场切换pannel*/

本例为两个pannel;

    $('#main_list').bind("swipeLeft", function() {

        $.ui.loadContent("#history", false, false, "slide");

    });

    $('#his_list').bind("swipeRight", function() {

        $.ui.loadContent("#main", false, true, "slideright");

    });

4.比较重要的上拉下拉刷新功能,

首先将需要此功能的pannelid设为webslider或者修改 $("#webslider")为 $("#你的pannel
 id");

下面这段代码只能实现上拉在页底刷新内容,具体可以参考jQmobi文档。

 $("#webslider").css("overflow",
"auto");/*这一段可以不用,手机访问可能出现白屏*/

var myScroller;

    $.ui.ready(function () {

        myScroller = $("#webslider").scroller(); //Fetch the scroller from cache

        //Since this is a App Framework UI scroller, we could also do

        // myScroller=$.ui.scrollingDivs['webslider'];

        myScroller.addInfinite();

        myScroller.enable();

        $.bind(myScroller, "infinite-scroll", function () {

            var self = this;

            if($(this.el).find("#infinite").length==0){/*防止上拉出现多个加载*/

                $(this.el).append("<div id='infinite' style='height:60px;line-height:60px;text-align:center;font-weight:bold'>正在加载请稍后...</div>");

            }

            $.bind(myScroller, "infinite-scroll-end", function () {

                $.unbind(myScroller, "infinite-scroll-end");

                self.scrollToBottom();

                setTimeout(function () {

                    $(self.el).find("#infinite").remove();

                    self.clearInfinite();/*清除上拉*/

                    $(this.el).append("<div>上拉刷新的内容。。。</div>");

                    self.scrollToBottom();

                }, 1000);

            });

        });

        /*$("#webslider").css("overflow", "auto");*//*手机访问可能出现白屏*/

    });

jQmobi视频教程地址:http://www.phonegap100.com/jiaocheng/JqMobi/jQmobi视频教程

写的比较简单,只是针对自己写代码是遇到的一些问题,如果有错误,麻烦指出!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息