7

Po przewijaniu w dół szukam sposobu dodania kolejnych list do dolnej części listy. Na przykład na początku mam 20 zwrotów. Zamierzałem użyć paginacji i po prostu wróciłem tyle, ile wróciło z mojego zapytania, ALE wolałbym wrócić 15-20, a następnie na końcu przewijania automatycznie dodawać więcej do tej listy lub mieć przycisk "zobacz więcej" . Jestem nowy w jQuery Mobile i zastanawiam się, czy ktoś widział takie rzeczy zaimplementowane. Jest to również używane w Phonegap. Jeśli tak, to możesz wskazać mi właściwy kierunek? Wielkie dzięki z góry!Szukasz sposobu na dynamiczne dodawanie kolejnych list do dolnej części listy jQuery Mobile Listview

Odpowiedz

18

Zamiast automatycznie ładować więcej elementów listy, sugeruję umieszczenie przycisku, który użytkownicy mogą dotknąć, aby załadować więcej (ale to tylko moja sugestia).

//setup an interval so we can throttle the `scroll` event handler since there will be tons of `scroll` events fired 
var timer = setInterval(function() { 
     scrollOK = true; 
    }, 100),//run this every tenth of a second 
    scrollOK = true;//setup flag to check if it's OK to run the event handler 
$(window).bind('scroll', function() { 

    //check if it's OK to run code 
    if (scrollOK) { 

     //set flag so the interval has to reset it to run this event handler again 
     scrollOK = false; 

     //check if the user has scrolled within 100px of the bottom of the page 
     if ($(this).scrollTop() + $(this).height() >= ($(document).height() - 100)) { 
      //now load more list-items because the user is within 100px of the bottom of the page 
     } 
    } 
}); 

Oto demo: http://jsfiddle.net/knuTW/

Aktualizacja

To trochę łatwiej po prostu załadować przycisk, który użytkownik może kranu, wtedy gdy jest na podsłuchu, obciążenie więcej wierszy, a następnie ponownie Dołącz przycisk load-more na końcu listy:

var $loadMore = $('ul').children('.load-more'); 
$loadMore.bind('click', function() { 
    var out = []; 
    for (var i = 0; i < 10; i++) { 
     out.push('<li>' + (count++) + '</li>'); 
    } 
    $('ul').append(out.join('')).append($loadMore).listview('refresh'); 
});​ 

Oto demo: http://jsfiddle.net/knuTW/2/

+0

Dzięki tak dużo Jasper! Dam temu wir. Myślałem, że będę musiał dodać przycisk i nadal mogę. – tjoenz

+0

@urbanrunic Do odpowiedzi dodałem ** aktualizację **, aby pokazać, jak łatwo można to zrobić za pomocą przycisku, a nie automatycznie. – Jasper

+0

Dziękuję Jasper! Mam problemy z nieskończonym przewijaniem, które nie chce działać. Być może jest to projekt wielostronicowy, z którym muszę pracować. Ale postaram się to za pomocą przycisku :) – tjoenz

3

Jest przykładem może pomóc:

http://jsfiddle.net/dhavaln/nVLZA/

// load test data initially 
for (i=0; i < 20; i++) { 
    $("#list").append($("<li><a href=\"index.html\"><h3>" + i + "</h3><p>z</p></a></li>")); 
} 
$("#list").listview('refresh'); 


// load new data when reached at bottom 
$('#footer').waypoint(function(a, b) { 
    $("#list").append($("<li><a href=\"index.html\"><h3>" + i+++"</h3><p>z</p></a></li>")); 
    $("#list").listview('refresh'); 
    $('#footer').waypoint({ 
     offset: '100%' 
    }); 
}, { 
    offset: '100%' 
});​ 
+0

Tak, właśnie tego szukałem ... co masz w tym przykładzie. Dam ci znać, jak to działa :) – tjoenz

+0

Czy mógłbyś rozwinąć kod w swoim skrzypcach? Być może link do strony z wtyczką? – Jasper

+0

waypoint to naprawdę prosta wtyczka, która uruchamia zdarzenie za każdym razem, gdy dojdziesz (przewiń w dół) do elementu selektora. sprawdź http://imakewebthings.com/jquery-waypoints/ i https: // github.com/imakewebthings/jquery-waypoints dla więcej szczegółów – dhaval

0

Istnieje kilka artykułów opisujących metody „zawsze przewijać” i „nieskończonego przewijania”, czyli to, co brzmi jak pytasz o .

Ideą jest załadowanie asynchronicznie większej ilości danych, gdy użytkownik przewinie w dół do z góry określonej liczby elementów.

Istnieje znany problem z tą metodą, ponieważ powoduje, że kłamca wychodzi z paska przewijania.

http://www.infinite-scroll.com/infinite-scroll-jquery-plugin/
http://masonry.desandro.com/demos/infinite-scroll.html
http://designbeep.com/2011/08/12/12-jquery-infinite-scrollingscroll-read-plugins-for-content-navigation/ http://www.jquery4u.com/tutorials/jquery-infinite-scrolling-demos/

+0

Ahh, dzięki @jefferyhamby. Przeczytam te linki. Myślę, że byłoby to bardzo miłe, ale mogę, jak już wspomniałem, po prostu kliknąć przycisk "zobacz więcej" na dole listy. – tjoenz

Powiązane problemy