在Ajax div刷新后,Jquery Masonry相互加载

Ste*_*son 4 ajax jquery ruby-on-rails jquery-masonry

我正在使用ajax刷新包含图像的div.我最初使用砌体来添加布局.

然后ajax调用返回一个使用html()方法刷新div的js.现在完成后我正在打电话masonry('reloadItems').但是砌筑将所有图像加载到另一个上.页面调整大小后,它的工作原理.我尝试手动触发页面调整大小,但它不会使砌体进行调整.

JS:

$('#timerange-select, #category_select').bind('change', function() {
    form=$('#images-filter-form');
    $.get(form.action, form.serialize(),function(){
      var $container = $('#images_container');
      $container.imagesLoaded(function(){$container.masonry('reloadItems');});
      $(window).trigger('resize');
    }, 'script');
 });
Run Code Online (Sandbox Code Playgroud)

好的,这个ajax请求的响应是:

$('#images_container').html('<%= escape_javascript(render("shared/random_issues")) %>');
Run Code Online (Sandbox Code Playgroud)

所以我没有附加图片.我要更换容器是准确的. 在此输入图像描述

这实际上是相互加载的10个图像.

编辑:请参阅http://stackoverflow.com/questions/17697223/masonry-images-overlapping-above-each-other/17697495?noredirect=1#17697495css和html.

Ste*_*son 7

好吧,我好像已经解决了这个问题.

我使用以下方法获得了砌体对象:

var masonry = $('#issue_container').data('masonry');
Run Code Online (Sandbox Code Playgroud)

现在使用这种方法reloadItems()然后调用layout().在第一个方法调用之后,每个项目在一个tile中相互重叠,然后在调用layout()之后形成一个漂亮的砌体布局.从左上角移动到漂亮布局的动画也很不错:D.