2013-03-03 19 views
14

'da bir DIV içinde sonsuz/sonsuz kaydırma nasıl yapılır? Burada sonsuz kaydırma sorununu ele alan birkaç soru var. Ancak bunların çoğu eklentileri kullanıyor.Javascript/jQuery

Mevcut sayfalama işlevlerimle çalışacak olan sonsuz kaydırmayı nasıl uygulayacağımı öğrenmek istiyorum. Şu anda "daha fazla yükle" düğmesine bastığımda, tıklandığında, sonraki 10 öğeyi getirecek ve listeye eklenecektir. "Daha fazla yükle" düğmesine tıklandığında bunu yapmak yerine, kaydırma konumu en alta geldiğinde olmasını isterim. Ayrıca, bu liste ana sayfada değil, bir DIV içinde. Sayfa numarasını gizli bir alana 'pageNum' kimliğiyle kaydetme.

$.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

Muhtemelen en basit yol, listenin en alt kısmına bir öğe koymak olabilir. Daha sonra, daha fazla yükleyebilmeniz için aşağı kaydırdıklarını biliyorsunuz. Viewer'da –

+0

görünümde bir elemanın nasıl kontrol edileceğine dair bir çok cevabı bulabilirsiniz. Teşekkürler, işe yarayacak gibi geliyor, ama tam olarak buradaki kodumla nasıl bütünleşecek. Bunu buldum: http://stackoverflow.com/questions/123999/how-to-tell-if-a-dom-element-is-visible-in-the-current-viewport Ancak, ne zaman elementInViewport işlevini çağırırım ? – Prabhu

cevap

30

basit yolu, dibe ulaştınız olmadığını kontrol etmek ve "yük daha" compleksin daha sonra bir tıklama olayı tetiklemek etmektir.

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

Yukarıdaki kod yalnızca bir örnektir, üretim ortamınızda kullanmayın.

güncelleme

... ve daha iyi bir yol tetik yerine işlevini çağıran bir olay işlevini aramak. Update2

... ve en iyi yolu: Kullanıcı, eğer yapmak ne karar verelim (bu durumda o değil sonraki ulaşmak için, lütfen sayfanın sonuna ulaşmak için aşağı kayar sayfa);)

+8

"Click'ing" yerine, düğmenin kullandığı işlevi çağırmak daha iyi olurdu. (+1 yine de) – Doorknob

+2

bir sayfanın en altındaysanız ve yenilendiyse bu işe yaramayabilir: Zaten alttasınız ve kaydırma tetikleyicisi tetiklenmedi – Asenar

+1

@Asenar Cevabımı güncelledim. Kaydırma olayını tetikleme (veya tıklama etkinliğini tetikleme, hatta tuşun kullandığı işlevi daha iyi çağırmak), sayfa yüklenirken hile yapmalısınız ... – yckart