无法使用JQuery初始化Masonry

根据官方文档 ,有不同的方法来初始化砌体容器。 HTML初始化工作正常,但是当我尝试将参数从data-masonry属性移动到JQuery时,事情就会中断。

这是使用JSON参数的HTML初始化。

然后,当我将它们移动到我的js / JQuery文件时,这就是它当前的样子:

 var $container = $('#container'); // initialize $container.masonry({ columnWidth: '.grid-sizer', itemSelector: '.item', isFitWidth: true }); 

使用后一版本,grid-sizer元素变得可见,当然不应该出现。

我在官方文档中没有看到关于何时需要在JQuery中调用初始化代码的规范。 是$(文件).ready我可以称之为?

布局破坏的JSFIDDLE: http : //jsfiddle.net/1f1kwfbd/10/

我在官方文档中没有看到关于何时需要在JQuery中调用初始化代码的规范。 是$(文件).ready我可以称之为?

所以你可以随时打电话。

最快的方式确实是在document.ready上 – 这会在页面加载时立即激活它

 $( document ).ready(function() { var $container = $('#container'); // initialize $container.masonry({ columnWidth: '.grid-sizer', itemSelector: '.item', isFitWidth: true }); }); 

或者,您可以将砌体代码封装在一个函数中,并选择稍后调用它。 例如

 // Declare your function function initMasonry() { var $container = $('#container'); // initialize $container.masonry({ columnWidth: '.grid-sizer', itemSelector: '.item', isFitWidth: true }); } 

要调用该函数,只需调用它:

 initMasonry(); 

更新

在阅读了砌体文档之后,您需要创建一个新的砌体对象,而不是在jQuery选择器上初始化砌体对象。

示例代码:

 $(document).ready(function() { var container = document.querySelector('#container'); var msnry = new Masonry( container, { columnWidth: '.grid-sizer', itemSelector: '.item', isFitWidth: true }); }); 

更新小提琴: http : //jsfiddle.net/pjbq4gj6/

文档供参考: http : //masonry.desandro.com/#javascript