2011-03-05 43 views
4

如何通过Ajax删除项目时如何刷新砌体?这是我用来删除该项目的代码:删除项目时刷新jquery.masonry

if($deletes = $('a[rel=delete]')) { 
    $deletes.click(function() { 
     if(!window.confirm('Are you sure you wish to delete this picture?')) 
      return false; 
     $t = $(this); 
     $.post(
      $t.attr('href'), 
      {}, 
      function(data) { 
       if(data == "success") 
        $t.parents('.deleteable:first').fadeOut(); 
      } 
     ); 
     return false;   
    }); 
} 

我想要刷新的原因是在删除项目后删除产生的空格。

+0

请考虑选择一个正确的答案。 – Chango 2013-05-15 14:30:12

+0

[使用jquery masonry隐藏元素后重新组织所有元素]可能的重复(http://stackoverflow.com/questions/12086900/reorganize-all-elements-after-hiding-a-element-using-jquery-masonry) – Chango 2013-05-15 14:35:09

回答

1

我会说只是在选择器上再次调用它。它似乎有a check来查看它是否被再次调用。

...snip... 
    // checks if masonry has been called before on this object 
    props.masoned = !!$wall.data('masonry'); 
...snip... 

我也想建议 saveOptions设置,因为它似乎支持它重新调用。 没关系,它似乎在默认情况下这样做(D'哦!)

+0

我尝试再次调用它,使用这个,但没有效果: $('。masonry-wrapper')。masonry({columnWidth:188,singleMode:true,itemSelector:'.item'}); – Freeman 2011-03-06 00:11:53

4

添加一个回调到您​​实际调用.remove()您删除的元素,一旦它的淡出,然后再打电话容器上.masonry()

+0

谢谢大家!这些建议奏效。 – Freeman 2011-03-06 01:32:10

+0

调用masonry再次为我工作。谢谢! – jphreak 2014-05-18 19:59:00

+0

感谢这个有用的提示。适用于我的项目。 – 2017-04-18 08:34:07

1

在淡出回调中再次调用砌体。让自己变得简单,并在一个函数中进行砌体初始化。在那里定义你的选项,这样你就不必将选项带入你的回调范围。

像这样

$(function(){ 

    var $bricks = $('your > elements'); 

    function BuildWall(){ 
    $bricks.masonry({your:'options'}); 
    } 

    BuildWall(); 


//Your code modified 
if($deletes = $('a[rel=delete]')) { 
    $deletes.click(function() { 
     if(!window.confirm('Are you sure you wish to delete this picture?')) 
      return false; 
     var $t = $(this); 
     $.post(
      $t.attr('href'), 
      {}, 
      function(data) { 
       if(data == "success") 
        $t.parents('.deleteable:first').fadeOut(function(){ 
         //This is faster than $(this).remove(); 
         $(this).empty().remove(); 
         //Reset Masonry 
         BuildWall(); 
        }); 
      } 
     ); 
     return false;   
    }); 
} 
}); 
相关问题