0

我有一个带有 iScroll4 的 PhoneGap 应用程序,它基本上是带有 2000 个列表项的 iScroll 示例。

<!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, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<title>iScroll demo: iOS Perfect Scrollbar</title>

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

<script src="js/jquery-1.7.1.js"></script>
<script src="js/iscroll.js"></script>
<script src="js/alldata.js"></script>

<script type="text/javascript">

var myScroll;
function loaded() {
    myScroll = new iScroll('wrapper', 
    { 
        scrollbarClass: 'myScrollbar',
        hideScrollbar:false,
        /*onBeforeScrollStart: function (e) { return false; }*/
    });
}

document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);

document.addEventListener('DOMContentLoaded', loaded, false);

</script>

<script>
    function initList(){
        for(var i=0; i<allData.length; i++){
            var line = "<li style='color:#"+ allData[i].Color + ";'>" + allData[i].EventName + "</li>"
            $("#thelist").append(line);
        }
    }

    $(document).ready(function(){
        initList();
        initList();
        initList();
        initList();
        //alert("Finished!");
    });
</script>

</head>
<body>
<div id="header"><a href="http://cubiq.org/iscroll">iScroll</a></div>
<div id="wrapper">
    <div id="scroller">
        <ul id="thelist">
        </ul>
    </div>
</div>

<div id="footer"></div>

</body>
</html>

注意:该变量allData是一个包含 500 个对象的 JSON 数组。
已编辑: 它在摩托罗拉 Atrix (2.3.3) 和 Galaxy 3 上运行良好,
但在 1000 个列表项后它不会在 Galaxy 2 (4.2.2) 和 Galaxy3 上移动,奇怪的是摩托罗拉 Atrix 的 Android 版本较低,而且它是网络-toolkit 速度较慢

有没有办法解决这个问题?

4

1 回答 1

1

加载数据后,您只需要刷新列表。

function initList(){
        for(var i=0; i<allData.length; i++){
            var line = "<li style='color:#"+ allData[i].Color + ";'>" + allData[i].EventName + "</li>"
            $("#thelist").append(line);
        }

        myScroll.refresh();
    }
于 2013-07-09T12:44:36.467 回答