0

I am trying to build a scrolling system for my website. This is what I have com up with ...

$.ajaxSetup({ cache: false });

    $(window).scroll(function(){

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

        picturesCount = $(".Picture-1A").length;
        allPicturesCount = $("#allPicturesCount").text();

        alert('picturesloaded:' + picturesCount + ' PicturesDB: ' + allPicturesCount)

        if(picturesCount < allPicturesCount){

            $.post('ajax/load-latest-pictures.php', {pictures_loaded:picturesCount},  function(data){

                if(data){
                    $("#loadMore").append(data);
                }

            });

        }else{
            $("#loadMore").append("<center>There are no pictures.</center>");
            return;
        }

        }
    });

I am having problem when all the pictures have been appended and there is nothing left. The problem is every time I get to the bottom of the page 'There are no pictures.' get appended more than once. How can I append it once? Try it on your browser and tell me what you think.

The second question is that I am having problems with IE, all versions. Evertime I get to the bottom and I have pictures left it loads it more than once. I searched for an answer and all I got was that IE have problems with cache. So I added the $.ajaxSetup cache option to false. But the problem still exist.

3
Contributors
6
Replies
31
Views
1 Year
Discussion Span
Last Post by FarrisFahad
1

Your function gets called every time there is a scroll event, so at the bottom of the page, with no more pictures to display, it has no choice to respond with "There are no pictures."
Add a variable and set it to true when you reach the "no pictures point". Then check if that variable is false at the start of the scroll event before proceeding.
Can't help with the IE thing...

0

It worked thanks a lot for the help ...
For people who want to take a look at the code after fixes, here you go ...

$.ajaxSetup({ cache: false });

    endPictures = true;

    $(window).scroll(function(){



        if(endPictures == true){

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

        picturesCount = $(".Picture-1A").length;
        allPicturesCount = $("#allPicturesCount").text();

        alert('picturesloaded:' + picturesCount + ' PicturesDB: ' + allPicturesCount)

            $.post('ajax/load-latest-pictures.php', {pictures_loaded:picturesCount},  function(data){

                if(data){
                    $("#loadMore").append(data);
                }else{
                    $("#loadMore").append("<center>There are no pictures.</center>");
                    endPictures = false;
                }
            });
        }

        }
    });
-1
$.ajaxSetup({ cache: false });
    $(window).scroll(function(){
        if($(window).scrollTop() == $(document).height() - $(window).height()){
        picturesCount = $(".Picture-1A").length;
        allPicturesCount = $("#allPicturesCount").text();
        allPicturesCount = parseInt(allPicturesCount);
        alert('picturesloaded:' + picturesCount + ' PicturesDB: ' + allPicturesCount)
        if(picturesCount < allPicturesCount){
            $.post('ajax/load-latest-pictures.php', {pictures_loaded:picturesCount},  function(data){
                if(data){
                    $("#loadMore").append(data);
                }
            });
        }else{
            $("#loadMore").append("<center>There are no pictures.</center>");
            return;
        }
        }
    });

Edited by Nikolayzah: solution for appending text once

0

I have found the solution. The problem was that the .scroll method loop through $(window).height() part more than once. So all I had to do it this ...

<script>
$(document).ready(function(){

    $.ajaxSetup({ cache: false });

    endPictures = true;

    scrollCount = 0;

    $(window).scroll(function(){

        if(endPictures == true){

        if(scrollCount == 0){

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

            scrollCount = 1;

            picturesCount = $(".Picture-1A").length;

                $.post('ajax/load-latest.php', {off_set:picturesCount},  function(data){
                    if(data){
                        $("#loadMore").append(data);
                        scrollCount = 0;
                    }else{
                        $("#loadMore").append("<div class=\"NoMorePictures\"><center>There are no pictures left.</center></div><br/ >")
                        endPictures = false;
                        scrollCount = 0;
                    }
                });

            }

        }

        }
    });

});
</script>
This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.