基本的なjQueryの無限スクロール関数を作成しました。予想される動作は、無限スクロールのデザインパターンと一致しています。
ajaxサーバーの呼び出しが完了すると、スクロールイベントを再バインドします。
最初のajax呼び出しではすべてが期待どおりに機能しますが、何らかの理由でスクロールイベントがリバウンドされていません。関数をデバッグするためにコンソールデータを追加すると、コードはsetScrollingAction()の最後まで実行されますが、スクロールイベントは発生しません。
私は何が欠けていますか?
// Function to make the ajax call, append the results and rebind the scroll event
function loadContent(opts) {
$(opts.scrollTarget).unbind('scroll');
$(opts.loaderObject).show();
$.get($(opts.gridObject).attr('data-link'), function(data) {
var $data = $(data);
$(opts.gridObject).append($data.find(opts.appendObject));
$(opts.loaderObject).hide();
$(opts.gridObject).attr('data-link', $data.find(opts.gridObject).attr('data-link'));
setScrollingAction(opts);
});
};
// Function to set the loading action to the scroll event
function setScrollingAction(opts) {
$(opts.scrollTarget).bind("scroll", function(event) {
if (inLoadingRange(opts)) { loadContent(opts); }
});
};
// Function to determine height from bottom of page
function inLoadingRange(opts) {
var target = opts.scrollTarget;
return ($(target).scrollTop()+opts.heightOffset >= $(document).height() - $(target).height());
};
// Fire it up
$(document).ready(function(){
opts = {
'scrollTarget': $(window),
'loaderObject': "#loading",
'gridObject' : '#tileGrid',
'appendObject': '.newItem',
'heightOffset': 10
};
setScrollingAction(opts);
});