2016-11-07 64 views
3

这一定很简单,但我很困惑。同位素和Bootstrap3:内容div在排序中消失

内容divs在排序时消失。

而我错过了正确的data-filter?或者display:nonedisplay:block

Codepen:http://codepen.io/anon/pen/oYXXPq(您可以克隆它做出改变。)

HTML:

<ul id="filters"> 
    <li><a href="#" data-filter="*">Everything</a></li> 
<li><a href="#" data-filter="blog">Blog</a></li> 
<li><a href="#" data-filter="ciso">CISO</a></li> 
<li><a href="#" data-filter="labs">LABS</a></li> 
</ul> 

<div class="container-fluid"> 
    <div id="isotope-blog"> 
    <div class="grid"> 
    <div class="grid-sizer col-xs-12 col-md-6"></div> 
    <div class="grid-item item col-xs-12 col-md-6"> 
     <div class="grid-item-content blog">Blog Blog Blog</div> 
    </div> 
    <div class="grid-item item col-xs-12 col-md-6"> 
     <div class="grid-item-content blog">Blog Blog Blog</div> 
    </div> 
    <div class="grid-item item col-xs-12 col-md-6"> 
     <div class="grid-item-content ciso">CISO CISO CISO</div> 
    </div> 
    <div class="grid-item item col-xs-12 col-md-6"> 
     <div class="grid-item-content labs">LABS LABS LABS</div> 
    </div> 
    <div class="grid-item item col-xs-12 col-md-6"> 
     <div class="grid-item-content labs">LABS LABS LABS</div> 
    </div> 
    <div class="grid-item item col-xs-12 col-md-6"> 
     <div class="grid-item-content labs">LABS LABS LABS</div> 
    </div> 
    <div class="grid-item item col-xs-12 col-md-6"> 
     <div class="grid-item-content ciso">CISO CISO CISO</div> 
    </div><div class="grid-item item col-xs-12 col-md-6"> 
     <div class="grid-item-content security-blog">BLOG BLOG BLOG</div> 
    </div> 
    </div> 
    </div> 
</div> 

CSS:

.grid-item-content { 
    max-height: 120px; 
    background: #0D8; 
    border: 2px solid #000; 
    overflow:hidden; 
} 

.container-fluid { 
max-width:1200px; 
} 

的jQuery:

jQuery(function ($) { 

    var $container = $('#isotope-blog'); //The ID for the list with all the blog posts 
    $container.isotope({ //Isotope options, 'item' matches the class in the PHP 
     itemSelector : '.item', 
     layoutMode : 'masonry' 
    }); 

    //Add the class selected to the item that is clicked, and remove from the others 
    var $optionSets = $('#filters'), 
    $optionLinks = $optionSets.find('a'); 

    $optionLinks.click(function(){ 
    var $this = $(this); 
    // don't proceed if already selected 
    if ($this.hasClass('selected')) { 
     return false; 
    } 
    var $optionSet = $this.parents('#filters'); 
    $optionSets.find('.selected').removeClass('selected'); 
    $this.addClass('selected'); 

    //When an item is clicked, sort the items. 
    var selector = $(this).attr('data-filter'); 
    $container.isotope({ filter: selector }); 

    return false; 
    }); 

}); 

回答

0

这现在工作:http://codepen.io/anon/pen/oYXXPq

这是一个两列的砖石和Bootstrap布局由grid-item div元素的过滤器类排序。过滤器类可以是多个不同的类。

问题是:

HTML标记过于复杂和错误的;它需要的格式为:

<div class="container"> 

    <div class="isotope-list"> 

    <div class="row"> 

     <div class="grid-item blog">OneOneOneOne Blog Blog Blog</div> 

     <div class="grid-item blog">TwoTwoToTwoTwoTwo Blog Blog Blog </div> 

and on and on... 

</div> 
    </div> 

有需要的CSS小的变化。

而且我的Javascript需要作出和明确的更新到选定的类别:

var selectedCategory; 

var $grid = $('.isotope-list').isotope({ 
    itemSelector: '.grid-item', 
    masonry: { 
    columnWidth: 160, 
    gutter: 20 
    }, 
    getSortData: { 
    selectedCategory: function(itemElem) { 
     return $(itemElem).hasClass(selectedCategory) ? 0 : 1; 
    } 
    } 
}); 

var $items = $('.row').find('.grid-item'); 

$('.sort-button-group').on('click', '.button', function() { 
    // set selectedCategory 
    selectedCategory = $(this).attr('data-category'); 
    if (selectedCategory == 'all') { 
    $grid.isotope({ 
     sortBy: 'original-order' 
    }); 

    } 

    // update sort data now that selectedCategory has changed 
    $grid.isotope('updateSortData'); 
    $grid.isotope({ sortBy: 'selectedCategory' }); 
}); 

    // change is-checked class on buttons 
$('.button-group').each(function(i, buttonGroup) { 
    var $buttonGroup = $(buttonGroup); 
    $buttonGroup.on('click', 'button', function() { 
    $buttonGroup.find('.is-checked').removeClass('is-checked'); 
    $(this).addClass('is-checked'); 
    }); 
});