我正在为我的网页使用 justifiedGallery。当我第一次访问该页面时,图库显示正确。但是当我重新加载页面时,它会中断。

jquery - 重新加载时 justifiedGallery 中断-LMLPHP

我正在使用 meteor 并使用react。

旧代码示例:

$(document).ready(() => {
  $('#gallery').justifiedGallery({
    rowHeight: 400,
    fixedHeight: false,
    lastRow:   'justify',
    margins:   -3,
  });
});

我已经把它放到了 jQuery setTimeOut() 函数中。
setTimeout(function(){
  $('#gallery').justifiedGallery({
    rowHeight: 400,
    fixedHeight: false,
    lastRow: 'justify',
    margins: -3,
  });
}, 100);

现在它工作正常。我只需要知道这是修复它的正确方法吗?这是为了将来的证明。

最佳答案

你永远不应该像那样运行全局操作 DOM 的代码。你得到的是实际模板渲染的竞争条件。这有时会随机起作用,有时会随机不起作用,并且总是会与模板引擎发生冲突,这充其量只会阻碍应用程序的性能。

将图库创建移动到 Template.onRendered() 方法并使用 this.$('.gallery') 而不仅仅是 $('#gallery') 。如果您使用的是 React,则等效的位置是包含 componentDidMount div 的表示组件的 .gallery 方法。

旁注:不要使用 id 进行元素选择,使用类或数据属性。 Id 是一种不好的做法,因为您创建的组件不可重用,并且可能存在性能问题。

关于jquery - 重新加载时 justifiedGallery 中断,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36686138/

10-10 10:25