Click here to Skip to main content
15,885,782 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
/* I am designing a site that stacking of divisions is similar to Pinterest(I am using Masonry library for that). Masonry works fine when the element first load but when it starts appending, masonry doesn’t work anymore.. please help me! Here’s my code..
*/

JavaScript
$(document).ready(function(){
                    var _onscrollprog = true;
                    var progposoffset = $('#progressmessage').offset();
                    var progpos = 0;
                    
                    $( window ).load( function()
                    {    
                        loaditempost();
                    });
                    function _(el){
                        return document.getElementById(el);
                    }
                    var itemloadcount = 0;
                    function loaditempost(){
                        var ajax;
                        _onscrollprog =false;
                        
                        if (window.XMLHttpRequest) {
                            ajax = new XMLHttpRequest();
                        }
                        else
                        {
                            ajax = window.XMLHttpRequest?new XMLHttpRequest(): new ActiveXObject("Microsoft.XMLHTTP");
                        }
                        
                        if(ajax){
                            ajax.addEventListener("load", completeHandler, false);
                            ajax.addEventListener("error", errorHandler, false);
                            ajax.open("POST", "include/loaditems.php?count=" + itemloadcount);
                            ajax.send();
                        }
                        else{
                            _("progressmessage").innerHTML = "<span class='icon-cross'></span> Error on requesting XMLHttp";
                        }
                    }
                    
                    function completeHandler(event){
                        var $grid = $('.grid');
                        $grid.append(event.target.responseText);
                        
                        $grid = $('.grid').masonry({
                            columnWidth: 315,
                            itemSelector: '.grid-item'
                        });
                        
                        itemloadcount += 8;
                        _onscrollprog = true;
                    }
                    
                    function errorHandler(event){
                        _("progressmessage").innerHTML = "<span class='icon-cross'></span> Oppss! Error Occured! :(";
                        _onscrollprog = true;
                    }
                    
                    $(window).scroll(function(){
                        var pos = $(window).scrollTop();
                        progpos = progposoffset.top;
                        if (pos > progpos){
                            if (_onscrollprog) {
                                loaditempost();
                            }
                        }
                    });
                });
Posted

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900