砌体重装& reloadItems无法正常工作

时间:2013-06-30 21:03:27

标签: javascript jquery jquery-masonry

砌体(v3)代码:

$(function msnry(){
var columns = 3,
setColumns = function() { columns = $( window ).width() > 640 ? 3 : $(window).width() >    320 ? 2 : 1; };
setColumns();
$(window).resize(setColumns);

    // layout Masonry again after all images have loaded
    var $container = $('#portfoliocontent').masonry();
    var msnry;
    $container.imagesLoaded( function(){
    msnry = new Masonry( container, {
    itemSelector : '.item',
    columnWidth:  function( containerWidth ) { return containerWidth / columns;}
      });
});

我的砌体容器(又名我的投资组合)

<div id="portfoliocontent" class="portfoliocontainer"></div>

我的目标是用类似'designshwr'的类隐藏所有div,但是砌体的重新加载根本不起作用。

$('.engineeringiC').click(function(){
    if($('div.item').hasClass('designshwr')){
    $('div.item.designshwr').hide('fast');
    $('.portfoliocontainer').masonry('reloadItems');

}

有什么建议吗?过去一周我一直在以不同的方式试图让它发挥作用,我仍然没有任何运气:(

2 个答案:

答案 0 :(得分:3)

我终于彻底解决了这个问题。

$(function msnry(){
var columns = 3,
setColumns = function() { columns = $( window ).width() > 640 ? 3 : $(window).width() >          320 ? 2 : 1; };
setColumns();
$(window).resize(setColumns);

// layout Masonry again after all images have loaded
var $container = $('#portfoliocontent').masonry();
var msnry;
$container.imagesLoaded( function(){
msnry = new Masonry( container, {
itemSelector : '.item',
columnWidth:  function( containerWidth ) { return containerWidth / columns;}
  });
});

var $ container = $('#portfoliocontent') .masonry();

如果其他人遇到此问题,可能是因为您将砌体初始化应用于容器变量。它现在很好用:))

答案 1 :(得分:1)

我遇到了同样的问题。可能是我的解决方案效率不高但是每当我得到最佳解决方案时,我已经使用过它。你可以尝试这一点,这对你也有帮助。

$('.engineeringiC').click(function(){
    var $container = $('#portfoliocontent').masonry();
    if($('div.item').hasClass('designshwr')){
    $('div.item.designshwr').hide('fast');
    //$('.portfoliocontainer').masonry('reloadItems');
    setTimeout(function(){ $container.masonry() }, 400);
}