iscroll滑动下拉 结合 jquery mobile 实例应用

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0,user-scalable=no" />
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="apple-mobile-web-app-status-bar-style" content="black" />
    <title></title>
    <link href="../Scripts/Jquerymobile/1.4.5/jquery.mobile-1.4.5.min.css" rel="stylesheet"
        type="text/css" />
    <script src="../Scripts/jquery-1.7.2.min.js" type="text/javascript"></script>
    <script src="../Scripts/Jquerymobile/1.4.5/jquery.mobile-1.4.5.min.js" type="text/javascript"></script>
    <script src="../Scripts/Jquerymobile/iscroll/iscroll.js" type="text/javascript"></script>
    <style type="text/css" media="all">
        body, ul, li
        {
            padding: 0;
            margin: 0;
            border: 0;
        }
        
        body
        {
            -webkit-user-select: none;
            -webkit-text-size-adjust: none;
            font-family: 微软雅黑;
            background-color: #f9f9f9;
            background-position: center center;
            background-repeat: no-repeat;
            border-radius: 1em;
        }
        #wrapper
        {
            position: absolute;
            z-index: 1;
            top: 0px;
            bottom: 0px;
            left: 0;
            width: 100%;
            overflow: auto;
        }
        
        #scroller
        {
            position: relative; /*    -webkit-touch-callout:none;*/
            -webkit-tap-highlight-color: rgba(0,0,0,0);
            float: left;
            width: 100%;
            padding: 0;
        }
        
        #scroller ul
        {
            position: relative;
            list-style: none;
            padding: 0;
            margin: 0;
            width: 100%;
            text-align: left;
        }
        
        #scroller li
        {
            background-color: #fafafa;
        }
        
        #scroller li > a
        {
            display: block;
        }
        
        /**
 *
 * 下拉样式 Pull down styles
 *
 */
        #pullDown, #pullUp
        {
            background: #fff;
            height: 40px;
            line-height: 40px;
            padding: 5px 10px;
            font-weight: bold;
            font-size: 12px;
            color: #888;
        }
        #pullDown .pullDownIcon, #pullUp .pullUpIcon
        {
            display: block;
            float: left;
            width: 40px;
            height: 40px;
            background: url(../Scripts/Jquerymobile/iscroll/pull-icon@2x.png) 0 0 no-repeat;
            -webkit-background-size: 40px 80px;
            background-size: 40px 80px;
            -webkit-transition-property: -webkit-transform;
            -webkit-transition-duration: 250ms;
        }
        #pullDown .pullDownIcon
        {
            -webkit-transform: rotate(0deg) translateZ(0);
        }
        #pullUp .pullUpIcon
        {
            -webkit-transform: rotate(-180deg) translateZ(0);
        }
        
        #pullDown.flip .pullDownIcon
        {
            -webkit-transform: rotate(-180deg) translateZ(0);
        }
        
        #pullUp.flip .pullUpIcon
        {
            -webkit-transform: rotate(0deg) translateZ(0);
        }
        
        #pullDown.loading .pullDownIcon, #pullUp.loading .pullUpIcon
        {
            background-position: 0 100%;
            -webkit-transform: rotate(0deg) translateZ(0);
            -webkit-transition-duration: 0ms;
            -webkit-animation-name: loading;
            -webkit-animation-duration: 2s;
            -webkit-animation-iteration-count: infinite;
            -webkit-animation-timing-function: linear;
        }
        #thelist
        {
            min-height: 600px;
        }
    </style>
</head>
<body>
    <div id="wrapper">
        <div data-role="page" id="pageone">
            <div id="scroller">
                <div data-role="content">
                    <div id="pullDown">
                        <span class="pullDownIcon"></span><span class="pullDownLabel">下拉刷新...</span>
                    </div>
                    <ul id="thelist" data-role="listview" data-icon="false">
                        @*<li><a href="#">
                            <img src="../Content/Wallet/list/guoqi.png" width="100%" />
                            <h3>
                                test</h3>
                            <p>
                                testtesttesttesttesttesttesttesttesttest.</p>
                            <p class="ui-li-aside">
                                2014-12-25 20:37</p>
                        </a></li>*@
                        @{
                            string tempHtml = string.Empty;
                            string imgShow = string.Empty;
                            string tempTime = string.Empty;
                            if (tempGoldList != null && tempGoldList.Count > 0)
                            {
                                foreach (KeyValuePair<AdDividendCDTO, string> _model in tempGoldList)
                                {
                                    tempHtml += "<li>";
                                    if (_model.Key.Status == 1)
                                    {
                                        imgShow = "../Content/Wallet/list/";
                                    }
                                    else if (_model.Key.Status == 2)
                                    {
                                        imgShow = "../Content/Wallet/list/";
                                    }
                                    else
                                    {
                                        imgShow = "../Content/Wallet/list/";
                                    }
                                    tempHtml += "<a href=\"#\" onclick=\"Goto('RemindWallet?curChangeOrg=00000000-0000-0000-0000-000000000000&sessionId=" + ViewBag.sessionid + "&userId=" + ViewBag.UserId + "&appId=" + ViewBag.AppId + "&isAnnon=" + ViewBag.IsAnnon + "&deviceId=" + ViewBag.DeviceId + "&os=" + ViewBag.MobileType + "&appName=" + ViewBag.AppName + "&msgId=" + _model.Key.Id + "')\">";
                                    tempHtml += "<img src=\"" + imgShow + "\" width=\"50em\" height=\"50em\" style=\"margin:0.3em;\">";
                                    tempHtml += "<p style=\"font-size:1.0em;width:80%;\">" + _model.Value + "</p>";
                                    tempHtml += "<p style=\" color:#a3a3a3; font-size:0.95em;\"></p>";
                                    tempHtml += " <p class=\"ui-li-aside\" style=\" color:#a3a3a3; font-size:0.95em; top:0.7em;\">" + _model.Key.DueDateStr + "<p>";
                                    tempHtml += "</a>";
                                    tempHtml += "</li>";
                                }
                            }
                           
                        }
                        @(new HtmlString(tempHtml))
                    </ul>
                    <div id="pullUp">
                        <span class="pullUpIcon"></span><span class="pullUpLabel">上拉加载更多...</span>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div>
        <input type="hidden" id="HidSessionId" value="@(ViewBag.sessionid)" />
        <input type="hidden" id="HidUserId" value="@(ViewBag.UserId)" />
        <input type="hidden" id="HidAppId" value="@(ViewBag.AppId)" />
        <input type="hidden" id="HidIsAnnon" value="@(ViewBag.IsAnnon)" />
        <input type="hidden" id="HidDeviceId" value="@(ViewBag.DeviceId)" />
        <input type="hidden" id="HidMobileType" value="@(ViewBag.MobileType)" />
        <input type="hidden" id="HidAppName" value="@(ViewBag.AppName)" />
    </div>
</body>
</html>
<script type="text/javascript">

    var myScroll,
    pullDownEl, pullDownOffset,
    pullUpEl, pullUpOffset,
    generatedCount = 0;

    /**
    * 下拉刷新 (自定义实现此方法)
    * myScroll.refresh();        // 数据加载完成后,调用界面更新方法
    */
    function pullDownAction() {
        setTimeout(function () {    // <-- Simulate network congestion, remove setTimeout from production!

            //模拟浏览器数据加载延迟
            UpOrDown = 0;
            CurrentPage = 1;
            GetData();

            myScroll.refresh();     //数据加载完成后,调用界面更新方法   Remember to refresh when contents are loaded (ie: on ajax completion)
        }, 1000); // <-- Simulate network congestion, remove setTimeout from production!
    };

    /**
    * 滚动翻页 (自定义实现此方法)
    * myScroll.refresh();        // 数据加载完成后,调用界面更新方法
    */
    function pullUpAction() {
        setTimeout(function () {    // <-- Simulate network congestion, remove setTimeout from production!
            UpOrDown = 1;
            GetData();

            myScroll.refresh();     // 数据加载完成后,调用界面更新方法 Remember to refresh when contents are loaded (ie: on ajax completion)
        }, 1000); //
    };


    /**
    * 初始化iScroll控件
    */
    function loaded() {
        pullDownEl = document.getElementById('pullDown');
        pullDownOffset = pullDownEl.offsetHeight;
        pullUpEl = document.getElementById('pullUp');
        pullUpOffset = pullUpEl.offsetHeight;

        myScroll = new iScroll('wrapper', {
            scrollbarClass: 'myScrollbar', /* 重要样式 */
            useTransition: false, /* 此属性不知用意,本人从true改为false */
            topOffset: pullDownOffset,
            onRefresh: function () {
                if (pullDownEl.className.match('loading')) {
                    pullDownEl.className = '';
                    pullDownEl.querySelector('.pullDownLabel').innerHTML = '下拉刷新...';
                } else if (pullUpEl.className.match('loading')) {
                    pullUpEl.className = '';
                    pullUpEl.querySelector('.pullUpLabel').innerHTML = '上拉加载更多...';
                }
            },
            onScrollMove: function () {
                if (this.y > 5 && !pullDownEl.className.match('flip')) {
                    pullDownEl.className = 'flip';
                    pullDownEl.querySelector('.pullDownLabel').innerHTML = '松手开始更新...';
                    this.minScrollY = 0;
                } else if (this.y < 5 && pullDownEl.className.match('flip')) {
                    pullDownEl.className = '';
                    pullDownEl.querySelector('.pullDownLabel').innerHTML = '下拉刷新...';
                    this.minScrollY = -pullDownOffset;
                } else if (this.y < (this.maxScrollY - 5) && !pullUpEl.className.match('flip')) {
                    pullUpEl.className = 'flip';
                    pullUpEl.querySelector('.pullUpLabel').innerHTML = '松手开始更新...';
                    this.maxScrollY = this.maxScrollY;
                } else if (this.y > (this.maxScrollY + 5) && pullUpEl.className.match('flip')) {
                    pullUpEl.className = '';
                    pullUpEl.querySelector('.pullUpLabel').innerHTML = '上拉加载更多...';
                    this.maxScrollY = pullUpOffset;
                }
            },
            onScrollEnd: function () {
                if (pullDownEl.className.match('flip')) {
                    pullDownEl.className = 'loading';
                    pullDownEl.querySelector('.pullDownLabel').innerHTML = '加载中...';
                    pullDownAction(); // Execute custom function (ajax call?)
                } else if (pullUpEl.className.match('flip')) {
                    pullUpEl.className = 'loading';
                    pullUpEl.querySelector('.pullUpLabel').innerHTML = '加载中...';
                    pullUpAction(); // Execute custom function (ajax call?)
                }
            }
        });

        setTimeout(function () { document.getElementById('wrapper').style.left = '0'; }, 800);
    }

    //初始化绑定iScroll控件 
    document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
    document.addEventListener('DOMContentLoaded', loaded, false); 

</script>
<script type="text/javascript">
    var CurrentPage = 2;
    var UpOrDown = 1; //0:下滑,1:上滑

    $(function () {
    });

    function GetData() {

        if (UpOrDown == 0) {
            CurrentPage = 1;
        }
        var postdata = {
            userId: $("#HidUserId").val(),
            appId: $("#HidAppId").val(),
            isAnnon: $("#HidIsAnnon").val(),
            deviceId: $("#HidDeviceId").val(),
            os: $("#HidMobileType").val(),
            appName: $("#HidAppName").val(),
            sessionid: $("#HidSessionId").val(),
            pageIndex: CurrentPage,
            pageSize: 15
        };


        $.ajax({
            async: true,
            type: "POST",
            dataType: "json",
            url: "/Wallet/AjaxGetWalletList?r=" + Math.random(),
            data: postdata,
            success: function (data) {
                if (data) {
                    var dataContent = "";
                    var RefContent = "";
                    var itemThelist = $("#thelist");
                    for (var i = 0; i < data.length; i++) {
                        dataContent = createItem(data[i]);
                        if (UpOrDown == 1) {
                            itemThelist.append(dataContent)
                        } else {
                            RefContent += dataContent
                        }
                    }
                    if (UpOrDown == 0) {
                        itemThelist.html(RefContent);
                    }
                    //数据加载完成后,调用页面更新方法
                    myScroll.refresh();
                    if (data.length > 0) {
                        CurrentPage++;
                    }
                }
            },
            error: function (err) {
                myScroll.refresh();
            }
        });
    }


    var template = '<li class="ui-li-has-thumb ui-first-child"><a class="ui-btn" href="#" onclick="Goto(\'RemindWallet?curChangeOrg=00000000-0000-0000-0000-000000000000&sessionId={sessionid}&userId={userid}&appId={appid}&isAnnon={isAnnon}&deviceId={deviceId}&os={MobileType}&appName={appName}&msgId={msgId}\')">'
                        + '<img src="{image}" width="50em" height="50em" style="margin:0.3em;" />'
                        + '<p style="font-size:1.0em;width:80%;">{message}</p>'
                        + '<p style=\" color:#a3a3a3; font-size:0.95em;\"></p>'
                        + '<p class="ui-li-aside" style="color:#a3a3a3; font-size:0.95em; top:0.7em;">'
                        + '{time}</p></a></li>';


    function createItem(data) {
        var str = template;
        str = str.replace("{sessionid}", $("#HidSessionId").val());
        str = str.replace("{userid}", $("#HidUserId").val());
        str = str.replace("{appid}", $("#HidAppId").val());
        str = str.replace("{isAnnon}", $("#HidIsAnnon").val());
        str = str.replace("{deviceId}", $("#HidDeviceId").val());
        str = str.replace("{MobileType}", $("#HidMobileType").val());
        str = str.replace("{time}", data.Key.DueDateStr);
        str = str.replace("{msgId}", data.Key.Id);
        str = str.replace("{message}", data.Value);
        str = str.replace("{appName}", $("#HidAppName").val());

        if (data.Key.Status == 1) {
            str = str.replace("{image}", "../Content/Wallet/list/");
        } else if (data.Key.Status == 2) {
            str = str.replace("{image}", "../Content/Wallet/list/");
        }
        else {
            str = str.replace("{image}", "../Content/Wallet/list/");
        }
        return str;
    }


    function Goto(_href) {
        window.location.href = _href;
    }
</script>

 

jquery mobile 全局性比较强,因此在页面设计的时候尽可能的 单独添加元素的样式,修改本身样式表一定要谨慎,以免影响其他页面。

 

posted on 2014-12-18 15:34  【波少】  阅读(792)  评论(0编辑  收藏  举报

导航