Jquery 无法在初始化之前对砌体调用方法;试图呼叫';摧毁';
因此,我尝试将jQuery-massy插件(from:)与modernizr结合起来,在低分辨率时消除massy,以便我的div恢复为居中的部分宽度布局。我承认我的javascript技能仍在发展中,但我认为社区可能会在这方面帮助我 在低于768px的分辨率下,我希望砌体在激活时被破坏,在更大的分辨率下,如果还没有运行,我希望它执行。目前一切都很正常,除了我在控制台中遇到这个错误:无法在初始化之前调用砌体上的方法;试图调用“销毁”。这是我处理此任务的代码Jquery 无法在初始化之前对砌体调用方法;试图呼叫';摧毁';,jquery,jquery-masonry,Jquery,Jquery Masonry,因此,我尝试将jQuery-massy插件(from:)与modernizr结合起来,在低分辨率时消除massy,以便我的div恢复为居中的部分宽度布局。我承认我的javascript技能仍在发展中,但我认为社区可能会在这方面帮助我 在低于768px的分辨率下,我希望砌体在激活时被破坏,在更大的分辨率下,如果还没有运行,我希望它执行。目前一切都很正常,除了我在控制台中遇到这个错误:无法在初始化之前调用砌体上的方法;试图调用“销毁”。这是我处理此任务的代码 $(window).lo
$(window).load( function() {
$('#masonry').masonry({
transitionDuration: 10,
columnWidth:'.sizer',
});
if(Modernizr.mq('screen and (max-width:767px)') && $('#masonry').masonry) {
$('#masonry').masonry('destroy');
}
});
$(document).ready(function() {
function doneResizing() {
if(Modernizr.mq('screen and (min-width:768px)')) {
// action for screen widths including and above 768 pixels
$('#masonry').masonry({
transitionDuration: 10,
columnWidth:'.sizer',
});
}
else if(Modernizr.mq('screen and (max-width:767px)') && $('#masonry').masonry) {
// action for screen widths below 768 pixels
$('#masonry').masonry('destroy');
}
}
var id;
$(window).resize(function() {
clearTimeout(id);
id = setTimeout(doneResizing, 0);
});
doneResizing();
});
所以我唯一能解决这个问题的方法就是全局声明一个布尔变量,这样我就可以在两个代码区域之间使用它。我已经读到这是一种不好的做法,但由于这是这个变量的唯一用途,并且没有可能的安全问题,我是否应该仍然不这样做
//init masonry
$(window).load( function() {
$('#masonry').masonry({
transitionDuration: 10,
columnWidth:'.sizer',
}
);
window.masonryIsActive = true;
if(Modernizr.mq('screen and (max-width:767px)')) {
$('#masonry').masonry('destroy');
window.masonryIsActive = false;
}
});
$(document).ready(function() {
function doneResizing() {
if(Modernizr.mq('screen and (min-width:768px)')) {
// action for screen widths including and above 768 pixels
$('#masonry').masonry({
transitionDuration: 10,
columnWidth:'.sizer',
});
window.masonryIsActive = true;
}else if(Modernizr.mq('screen and (max-width:767px)') && window.masonryIsActive == true) {
// action for screen widths below 768 pixels
$('#masonry').masonry('destroy');
window.masonryIsActive = false;
}
}
无论何时调用砌体中的任何方法,都必须初始化砌体
$('#masonry').masonry().masonry('destroy');
$('#masonry').masonry().masonry('remove');