【问题标题】:Masonry filter + infinite scroll issue砌体过滤器+无限滚动问题
【发布时间】:2015-05-12 12:29:05
【问题描述】:

我用无限滚动和过滤构建了 jQuery Masonry 布局。

我的问题是在滚动前点击过滤器时,无限滚动加载的内容没有被过滤。

有什么办法可以解决吗?

这里是检查链接:http://www.jcvergara.com/working/

这是完整的砌体代码:

$(document).ready(function(){
    var $container = $('.container');
    // initialize
    $container.masonry({
      columnWidth: 250,
      itemSelector: '.item',
      isFitWidth: true
    });
    $container.masonry( 'on', 'layoutComplete', function() {
        $('.right-line').css('height', $('.container').height());
    });
    $('.right-line').css('height', $('.container').height());


    // infinite scroll
    var $container = $('#content');
    $container.infinitescroll({ 
        navSelector  : "nav.posts-navigation",            
        nextSelector : "div.nav-previous a:first",    
        itemSelector : "#content div.item",       
        },
        // trigger Masonry as a callback
        function( newElements ) {
            var $newElems = $( newElements );
            $container.masonry( 'appended', $newElems );

            // open posts in ajax
            $('.post-link').click(function(){
            $('.openarticle').css('display', 'block');
            var post_link = $(this).attr('href');

            $('#openthis').html('<div class="title"><h2>Loading..</h2><div class="text"></div>');
            $('#openthis').load(post_link);
            $('<a></a>', {
                text: 'Close',
                class: 'close',
                id: 'close',
                href: '#'
            })
                .prependTo($('.openarticle .main'))
                .click(function() {
                        $('.openarticle').css('display', 'none');
                        $('#close').remove();
                    });
            return false; 
            }); 
        }
    );

    // filtering        
    $(".cat-item a").click(function(e) {
        e.preventDefault(); 
        var cut_url = "http://www.jcvergara.com/category/";
        var group = $(this).attr('href');       
        group = group.replace(cut_url, '').slice(0,-1);
        var group_class = "." + group;
        $(".cat-item a.active").removeClass('active');
        $(this).addClass('active');         
        if(group != "all") {
            $(".item").hide();
            $(group_class).show();
            $container.masonry();
        } else {
            $(".item").show();
            $container.masonry();
        }
    });
});

【问题讨论】:

    标签: filtering jquery-masonry infinite-scroll


    【解决方案1】:

    尝试为您的点击功能使用“on”:

    // filtering        
       $(".cat-item a").on( "click",function (e) {
        e.preventDefault(); 
        var cut_url = "http://www.jcvergara.com/category/";
        var group = $(this).attr('href');       
        group = group.replace(cut_url, '').slice(0,-1);
        var group_class = "." + group;
        $(".cat-item a.active").removeClass('active');
        $(this).addClass('active');         
        if(group != "all") {
            $(".item").hide();
            $(group_class).show();
            $container.masonry();
        } else {
            $(".item").show();
            $container.masonry();
        }
      });
    

    【讨论】:

    • 我用 on("click") 替换了所有点击,但没有任何改变。
    • 好吧,无法检查您的链接或代码,因为它所说的一切都在建设中。您可能还需要在 `function(newElements) {}' 中添加上述代码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-27
    • 1970-01-01
    相关资源
    最近更新 更多