javascript - 无限滚动+砖石加载所有元素

标签 javascript jquery html infinite-scroll masonry

我正在尝试使用无限滚动设置 Masonry,它可以工作,但它当前加载所有项目,然后当我单击下一页链接时,它会再次加载所有项目。

导航:

<div class="more" id="navigation">
    <a href="./?page=2">MORE IDEAS</a>
</div>

JS:

$(document).ready( function() {

        (function() {

            // Main content container
            var $container = $('.grid');

            // Masonry + ImagesLoaded
            $container.imagesLoaded(function(){
                $container.masonry({
                    itemSelector: '.grid-item',
                    columnWidth: '.grid-sizer',
                    gutter: '.gutter-sizer',
                    percentPosition: true
                });
            });

            // Infinite Scroll
            $container.infinitescroll({

                // selector for the paged navigation (it will be hidden)
                navSelector  : "#navigation",
                // selector for the NEXT link (to page 2)
                nextSelector : "#navigation a",
                // selector for all items you'll retrieve
                itemSelector : ".grid-item",

                },

                // Trigger Masonry as a callback
                function( newElements ) {
                    // hide new items while they are loading
                    var $newElems = $( newElements ).css({ opacity: 0 });
                    // ensure that images load before adding to masonry layout
                    $newElems.imagesLoaded(function(){
                        // show elems now they're ready
                        $newElems.animate({ opacity: 1 });
                        $container.masonry( 'appended', $newElems, true );
                    });

            });

            // Pause Infinite Scroll
            $(window).unbind('.infscr');

            // Resume Infinite Scroll
            $('.more a').click(function(){
                $container.infinitescroll('retrieve');
                return false;
            });

        })();

    });

内容:

<div class="grid">
    <div class="grid-sizer"></div>
    <div class="gutter-sizer"></div>
    <div class="grid-item">Item 1</div>
    <div class="grid-item">Item 2</div>
    <div class="grid-item">Item 3</div>
    <div class="grid-item">Item 4</div>
    <div class="grid-item">Item 5</div>
    <div class="grid-item">Item 6</div>
</div>

当前它加载所有项目,1 到 6,然后当我单击“加载更多”按钮时,它会再次加载项目 1 到 6。我查看了其他几个与此类似的问题,但它们的情况不同。这可能很简单,任何帮助将不胜感激。

最佳答案

想通了。

您需要将要加载的内容的一部分取出并放入另一个 html 页面中。然后您需要设置导航链接以转到该页面。由于它刚刚设置为 ?page=2,因此它只是再次加载同一页面。

关于javascript - 无限滚动+砖石加载所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32807046/

相关文章:

javascript - 如何自动填充 HTML 表单并立即提交?

javascript - 如何通过 JavaScript 自动 Google 音译文本区域中的单词(无需手动按空格键或 Enter 键)

javascript - event.preventDefault();仅在某些时候适用于提交表单

javascript - 动态调整div中的文本大小

html - 正确对齐图片说明

html - 将相邻 <div> 中的 <li> 计数提醒到被单击的按钮

javascript - 是否有 element.innerHTML 分配的回调?

javascript - 在 Laravel 中使用 Ajax 请求进行搜索

javascript - 当计数器大于2时隐藏按钮

javascript - 脚本调整网页大小