下にスクロールした後、リストビューの下部にリストを追加する方法を探しています。たとえば、最初は20アイテムの返品があります。ページ付けを使用して、クエリから戻ってきた数だけ返すつもりでしたが、15〜20を返し、スクロールの最後にこのリストに自動的に追加するか、「もっと見る」というボタンを表示します。 。私はjQueryMobileを初めて使用し、この種の実装を見た人はいないかと思います。これはPhonegapでも使用されています。もしそうなら、あなたは私を正しい方向に向けることができますか?よろしくお願いします!
3 に答える
より多くのリストアイテムを自動的にロードする代わりに、ユーザーがタップしてさらにロードできるボタンを配置することをお勧めします(ただし、これは私の提案です)。
//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
}
}
});
これがデモです:http://jsfiddle.net/knuTW/
アップデート
ユーザーがタップできるボタンをロードする方が少し簡単です。次に、ボタンをタップしたら、さらに行をロードload-more
して、リストの最後にボタンを再度追加します。
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');
});
これがデモです:http://jsfiddle.net/knuTW/2/
これは役立つかもしれない例です:
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%'
});
「永遠にスクロールする」と「無限にスクロールする」の方法を説明している記事がいくつかあります。
それらの背後にある考え方は、ユーザーが下から所定の数のアイテムまでスクロールダウンしたときに、非同期により多くのデータをロードすることです。
ただし、この方法には、スクロールバー自体からうそをつくという既知の問題があります。
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/