Yii中的无限滚动

时间:2012-06-26 16:02:09

标签: php javascript pagination yii

我正在寻找一种解决方案,在Yii的列表视图中显示许多项目(10个)。我希望能够在一个连续可滚动的列表中显示它们。这是捕获,当用户滚动到列表的末尾时,我希望新数据替换他刚刚滚动传递的数据。有点像谷歌音乐,如果你有一个很长的播放列表。

我查看了Yiinfinite-scroller,但它附加到列表的末尾,制作了一个非常长的列表,这会破坏我的内存使用。

由于

1 个答案:

答案 0 :(得分:3)

它的实际性很容易在js的几行中并在jQuery的帮助下实现无限滚动。测量内容div的高度,当页面滚动从divs高度减去滚动差异,然后当它达到最小量时,查询更多内容并重置高度计数器并重复:

<script type="text/javascript">
var contentHeight = 4000,;
var pageHeight = document.documentElement.clientHeight;
var scrollPosition;
var n = 1;

function scroll(){
    if(navigator.appName == "Microsoft Internet Explorer")
        scrollPosition = document.documentElement.scrollTop;
    else
        scrollPosition = window.pageYOffset;

    if((contentHeight - pageHeight - scrollPosition) < 500){
        $.ajax({ url: "./yourAPI/?next="+n, cache: false,
        success: function(data){
            //append result
            $('#infscroll').append('<div>'+data.result+'</div>');
        }, dataType: "json"});
        n += 1;
        contentHeight += 4000;
    }
}

$(document).scroll(function(){
    setInterval('scroll();', 250);
});
</script>

<div id="infscroll"></div>