2013-01-08 141 views

回答

2

你需要使用 'JSP滚动-Y' 事件。当用户滚动y条时会触发此事件。有关事件here的更多信息。由于浏览器每次触发此事件不止一次,而不是使用jQuery的常规.bind或.on,所以我使用jQuery debounce插件来防止浏览器每200毫秒触发一次该函数。你可以下载JQuery debounce here。因此,让我们说你的结构是这样的:

<div id="container"> 
    <ul id="list"> 
    <li> ... </li> 
    <li> ... </li> 
    <li> ... </li> 
    </ul> 
</div> 

使用JQuery会渴望实现自己的目标的JavaScript,如:

var container = $('#container'); 
var list = $('#list'); 

// initialize the scroll pane 
container.jScrollPane(); 

// bind the event 
container.debounce('jsp-scroll-y', function(event, scrollPositionY, isAtTop, isAtBottom) { 
    if (isAtBottom) { 
     $.ajax({ 
      type: 'GET', 
      async: true, 
      dataType: 'html', 
      url: '/path/to/more/elements', 
      success: function(data) { 
       if (data.length) { 
        list.append(data); 
        container.jScrollPane('reinitialise'); 
       } else { 
        container.unbind('jsp-scroll-y'); 
       } 
      }, 
     }); 
    } 
}, 200); 

当然,在这种情况下,“/路径/要/多/元素'应该返回li元素,并且当你完成所有事情时都没有。我使用在AJAX成功函数中增加的页面索引来获取新元素。您可以使用ajax调用或URL中的数据(取决于服务器上的实现)将此页索引发送到服务器。

相关问题