0

我有一个使用 JSON 生成的列表,它工作得很好。现在我想每 20 秒刷新一次这个列表,而且效果也很好。但是我希望能够在生成数据后立即更新我的 iScroll,但就像现在一样,它会等待 20 秒,然后更新滚动长度。我不知道从哪里开始,希望得到帮助......这是我的脚本:

var userid=1,

dataUrl = 'http://mypage.com/playermenu.php?callback=?&userid=' + userid,
dataCallback = function (data) {
    var content = [];
    //var profile = [];
    $.each(data, function (i, val) {
        content.push(val.list); // GETTING ALL THE GAMES //
        $('#userbar').html(val.profile); // FETCHING USERS DATA FOR PROFILEBAR //
    });
    $('#games').html(content.join('')).listview('refresh');
},
fetchData = function () {
    myScroll = new iScroll('wrapper');
    if (myScroll.isReady()){
        $.getJSON(dataUrl, dataCallback);
    }
};
fetchData();
setInterval(fetchData, 20000);

document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
document.addEventListener('DOMContentLoaded', function () { setTimeout(loaded, 200);  }, false);

提前致谢 :-)

4

1 回答 1

0

我认为#userbar并且#games#wrapper元素之内。因为每次你更新这些元素。我希望这有帮助:

$(function(){
myScroll = null;
dataCallback = function(data) {
    if (myScroll) { // before reuse it, completely destroy the myScroll and free some memory
        myScroll.destroy();
        myScroll = null;
    }
    myScroll = new iScroll('wrapper');
    var content = [];
    $.each(data, function (i, val) {
        content.push(val.list); // GETTING ALL THE GAMES //
        $('#userbar').html(val.profile); // FETCHING USERS DATA FOR PROFILEBAR //
    });
    $('#games').html(content.join('')).listview('refresh');
    setTimeout(function(){
        myScroll.refresh(); // refresh to show  correct dimensions
    }, 0);
}
fetchData = function () {
    var userid = 1;
    var dataUrl = 'http://mypage.com/playermenu.php?callback=?&userid=' + userid;
    $.getJSON(dataUrl, dataCallback);
}
fetchData();
setInterval(fetchData, 20000);
});

document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
document.addEventListener('DOMContentLoaded', function () { setTimeout(loaded, 200);  }, false);
于 2013-04-23T20:01:40.947 回答