0

私はこのコードを持っています:

$(window).scroll(function () { 

    if ($(window).scrollTop() >= $(document).height() - $(window).height() - 10) {

        var site_url = $("#site_url").val();
        var post_url = site_url+"index.php/ajax/get_more_users";
        $("#loading_more_users").show();
        var users_page = $("#users_page").val();


        //alert("y");
        $.post(post_url, {'page': users_page}, function(data){              
                //alert("x");
            $("#loading_more_users").hide();
            $("#left_members_collumn").append(data);
            $("#users_page").val(eval(Number(users_page)+1));


        });

   }
});

下にスクロールすると、$。postが1回、2回、または3回実行される理由を誰でも教えてくれますか?重複コンテンツを取得します。main関数は正常に実行されますが、なぜ複数のajaxリクエストがあるのか​​わかりません。

ありがとうございました。

4

2 に答える 2

3

スクロールは、if条件を満たす基準で複数回起動しています。これを防ぐためにできることは、投稿していることを示すブール値に設定されているため、2回投稿しないでください。

var isPosting = false;
$(window).scroll(function () { 

    if (!isPosting && $(window).scrollTop() >= $(document).height() - $(window).height() - 10) {
        isPosting = true;
        var site_url = $("#site_url").val();
        var post_url = site_url+"index.php/ajax/get_more_users";
        $("#loading_more_users").show();
        var users_page = $("#users_page").val();


        //alert("y");
        $.post(post_url, {'page': users_page}, function(data){              
                //alert("x");
            $("#loading_more_users").hide();
            $("#left_members_collumn").append(data);
            $("#users_page").val(eval(Number(users_page)+1));
            isPosting = false;

        });

   }
});
于 2013-01-12T02:37:47.617 に答える
2

この関数を関数にバインドするため、スクロールするたびにajaxリクエストが実行され$(window).scroll()ます。戻り値がtrueの場合if、を実行しajax requestます。

これを回避するには、onejqueryの関数関数を使用できます。

$(window).one('scroll', function () { 

    if ($(window).scrollTop() >= $(document).height() - $(window).height() - 10) {

        var site_url = $("#site_url").val();
        var post_url = site_url+"index.php/ajax/get_more_users";
        $("#loading_more_users").show();
        var users_page = $("#users_page").val();


        //alert("y");
        $.post(post_url, {'page': users_page}, function(data){              
            //alert("x");
            $("#loading_more_users").hide();
            $("#left_members_collumn").append(data);
            $("#users_page").val(eval(Number(users_page)+1));
        });
   }
});
于 2013-01-12T02:41:44.913 に答える