2013-03-03 31 views
14

Tôi nhận thấy có một số câu hỏi ở đây giải quyết vấn đề cuộn vô tận. Tuy nhiên, hầu hết trong số họ đang sử dụng plugin.Cách triển khai cuộn vô tận/vô hạn trong DIV trong Javascript/jQuery

Tôi muốn biết cách triển khai cuộn vô tận sẽ hoạt động với chức năng phân trang hiện tại của tôi. Hiện tại tôi có nút "tải thêm", khi được nhấp vào, sẽ tìm nạp 10 mục tiếp theo và thêm vào danh sách. Thay vì làm điều này khi nút "tải thêm" được nhấp, tôi muốn nó xảy ra khi vị trí cuộn đến đáy. Ngoài ra, danh sách này không nằm trên trang chính, nó nằm trong một DIV. Lưu trữ số trang trong một trường ẩn với id 'pageNum'.

$.ajax({ 
     type: "GET", 
     url: "/GetItems", 
     data: { 'pageNum': $('#pageNum').val() }, 
     dataType: "json", 
     success: function (response) { 
       $('#MyDiv ul').append(response.Html); 
       $('#pageNum').val(response.PageNum); 
      } 
     } 
}); 

#MyDiv 
{ 
    border:solid 1px #ccc; 
    width:250px; 
    height:500px; 
    overflow-y: scroll; 
} 

<div id="MyDiv"> 
    <ul> 
    <li>...</li> 
    ... 
    </ul> 
</div> 
+1

Có lẽ cách đơn giản nhất là đặt một phần tử ở cuối danh sách, sau đó khi nó được đưa vào xem bạn biết chúng đã cuộn xuống để bạn tải thêm. Bạn có thể tìm thấy một số câu trả lời trên SO về cách kiểm tra phần tử đang ở trong chế độ xem –

+0

Cảm ơn, có vẻ như nó sẽ hoạt động, nhưng chính xác nó sẽ tích hợp với mã của tôi ở đây như thế nào. Tôi thấy điều này: http://stackoverflow.com/questions/123999/how-to-tell-if-a-dom-element-is-visible-in-the-current-viewport tuy nhiên, khi nào tôi sẽ gọi hàm elementInViewport ? – Prabhu

Trả lời

30

Các Cách đơn giản nhất, là để kiểm tra xem bạn đã đạt đến đáy và để kích hoạt sau đó một nhấp sự kiện trên "nạp thêm" bạn -button.

$(window).on('scroll', function(){ 
    if($(window).scrollTop() > $(document).height() - $(window).height()) { 
     $("#load-more").click(); 
    } 
}).scroll(); 

Kịch bản trên chỉ là ví dụ, không sử dụng nó trong môi trường sản xuất của bạn.

cập nhật

... và cách tốt hơn là để gọi hàm thay vì kích hoạt một sự kiện mà gọi hàm.

Update2

... và cách tốt nhất: cho phép người dùng quyết định những gì là phải làm gì nếu ông làm (trong trường hợp này, ông cuộn xuống đến cuối trang của bạn, chứ không phải để đạt được tiếp theo trang);)

+8

Thay vì 'click'ing, sẽ tốt hơn nếu gọi chức năng mà nút đó sử dụng. (+1 anyway) – Doorknob

+2

nhận thấy điều này có thể không hoạt động nếu bạn đã ở cuối trang và làm mới: bạn đã ở dưới cùng và trình kích hoạt cuộn không kích hoạt – Asenar

+1

@Asenar Tôi đã cập nhật câu trả lời của mình. Kích hoạt sự kiện cuộn (hoặc kích hoạt sự kiện click, hoặc thậm chí tốt hơn gọi chức năng mà nút sử dụng) trên tải trang nên làm các trick ... – yckart

Các vấn đề liên quan