javascript - 使用 Isotope 和 imagesLoaded 来处理 Ajax 加载的内容

标签 javascript jquery ajax

我使用 Isotope 创建砖石网格,并且实现了一个加载更多按钮,当使用 AJAX 单击时可以获取更多项目。

在我的 AJAX 成功函数中,我为网格项创建所需的 html,如下所示:

 htm = '';
 htm+= '<div class="item">';
 htm+= '<img src="' + imgSrc  + '">';
 htm+= '</div>';

之后,我将元素附加到容器并调用 redo_isotope 函数

$container.append(htm);
redo_isotope()

我的 redo_isotope 函数:

  var $container = $('.grid');
  function redo_isotope(){
     $container.imagesLoaded( function(){
       $container.isotope({
         itemSelector: '.grid-item',
         transitionDuration:0,
         masonry: {
          gutter:15
         },
       });
     });
    $container.isotope().isotope('reloadItems');
  }

在大多数情况下,这使得新附加的项目在页面上很好地布局,而不会导致任何重叠问题,但在某些情况下,imageLoaded 函数似乎无法正确触发,导致附加项目的高度计算错误而被切断。

有人遇到过类似的问题吗?在这种情况下你是如何解决的?

最佳答案

这是我的建议:

将内容附加到$container:

var htm = '<div class="item"><img src="' + imgSrc  + '"></div>';
$container.append( $(htm) );

调用同位素附加函数:

$container.isotope( 'appended', $(htm) );

监控 imagesLoaded() 函数的进度 ... & ...

每次加载图像时都会触发同位素布局功能:

$container.imagesLoaded().progress(function(){
    $container.isotope( 'layout' );
});

关于javascript - 使用 Isotope 和 imagesLoaded 来处理 Ajax 加载的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33255447/

相关文章:

javascript - Node.js - 在客户端找不到全局变量

javascript - 使用 JavaScript 可缩放和可点击的不规则形状图像 map ?

javascript - JQuery 中的跨站点 HTTP 身份验证

Javascript 循环内提示

javascript - JQuery不会提交表单,因为它有多个表单按钮

javascript - Highcharts - 仅更改点击列的颜色

javascript - 如何在 MathJax 中使用波斯变量?

javascript - Return false 不会停止 ajax $.post 中的代码

javascript - 在 CI 上使用 jquery 操作分页,但链接已更新

javascript - Meteor-Angular2 HTML 模板不更新代码更改