1

我四处搜索并查看了一堆不同的逻辑,并认为我非常接近,但根本无法让我的无限滚动脚本将我的数据附加到砌体。我在拉数据时有一个 AJAX 文件,这是文件内部的主要行,它在滚动时拉数据:

        function getData() {

            // Post data to ajax.php
            $.post('ajax.php', {

                action        : 'scrollpagination',
                number        : $settings.nop,
                offset        : offset,

            }, function(data) {

                // Change loading bar content (it may have been altered)
                $this.find('#spinner').html($initmessage);

                // If there is no data returned, there are no more posts to be shown. Show error
                if(data == "") { 
                    $this.find('#spinner').hide();  
                }
                else {



                    // Offset increases
                    offset = offset+$settings.nop; 

                    // Append the data to the content div
                    $this.find('.content').append(data);


                    // No longer busy!  
                    busy = false;
                }   

            });

        }

我尝试对“$this.find('.content').append(data);”行进行编辑 因为这只是获取数据并将其放入位于我的主索引文件中的砌体函数内部的内容 div 中。

我尝试过诸如

$this.find('.content').append(data).masonry ('reload');

但根本无法让它正常工作并让它附加数据。

其余代码正常工作,滚动正常工作并提取数据,只是不会附加到砌体。

任何提示,我觉得我错过了一些非常小的东西。

提前致谢!

4

2 回答 2

9

我对 Masonry(新版本 3)也有同样的问题。关键是 AJAX/GET/POST 返回的 .filter() 。您可以在此处阅读 Masonry 的一个错误,解决方法是使用 .filter()。

    // Make jQuery object from HTML string
    var $moreBlocks = jQuery(data).filter('div.block');

    // Append new blocks to container
    jQuery('#container').append( $moreBlocks );

    // Have Masonry position new blocks
    jQuery('#container').masonry( 'appended', $moreBlocks );        

我做了一个小演示来帮助这里: http: //labs.funkhausdesign.com/examples/masonry/appended.html

于 2013-07-25T18:46:34.833 回答
2
$moreBlocks.imagesLoaded(function(){

    $moreBlocks.animate({ opacity: 1 });

    jQuery('#container').masonry( 'appended', $moreBlocks );

});

看起来这样做了。感谢您的帮助德鲁,非常感谢!

于 2013-07-28T19:37:03.500 回答