私はこれでスクロール時にAJAX関数を呼び出しています:
// Collecting scroll info
$('.overthrow').each(function() {
var self = this;
var path2root = ".";
var subcategoryId = $(this).attr('data-subcategoryId');
var page = 1;
$(this).bind('scroll', function() {
var scrollAmount = $(self).scrollLeft();
var documentWidth = $(self).data('currentElementPosition') || $(document).width();
var scrollPercent = (scrollAmount / documentWidth) * 100;
if (scrollPercent > 80) {
page++;
console.log("process.php?subcategoryId=" + subcategoryId + "&page=" + page);
// AJAX function for processing JSON
$.ajax({
url: "process.php?subcategoryId=" + subcategoryId + "&page=" + page,
type: "GET",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
for(i = 0 ; i < data.length; i++) {
var articleId = data[i].articleResult.articleId;
var title = data[i].articleResult.title;
var subhead = data[i].articleResult.subhead;
var image = data[i].articleResult.image;
var response = "<td><div class='articleResult'><a href='" + path2root + "/article/article.php?articleId=" + articleId + "'><img src='" + image + "' width='120'/></a><br><h3><a href='" + path2root + "/article/article.php?articleId=" + articleId + "'>" + title.substring(0,25) + "</a></h3></div></td>";
var appendedData = $(self).find("table tbody tr td:last-child").after(response).fadeIn('slow');
$(self).data('currentElementPosition', appendedData.position().left);
};
}
});
};
});
});
私の問題は、最初の応答がコンテンツに追加され、80%を超えて新しい結果にスクロールし始めると、ユーザーが80%の幅をスクロールするのを待つのではなく、スクロールする各ピクセルが同じAJAX関数を何度も呼び出すことです。新しいウィンドウサイズの。各ピクセルに対して効果的にAJAX呼び出しを行うと、80%を超えてスクロールされます。
ステートメントは、if
このようなものを使用するための間違ったルートですか?AJAX関数をトリガーする整数を動的に駆動するために、ある種のコールバックを提供する必要がありますか?