Jquery 无法在初始化之前对砌体调用方法;试图呼叫';摧毁';

Jquery 无法在初始化之前对砌体调用方法;试图呼叫';摧毁';,jquery,jquery-masonry,Jquery,Jquery Masonry,因此,我尝试将jQuery-massy插件(from:)与modernizr结合起来,在低分辨率时消除massy,以便我的div恢复为居中的部分宽度布局。我承认我的javascript技能仍在发展中,但我认为社区可能会在这方面帮助我 在低于768px的分辨率下,我希望砌体在激活时被破坏,在更大的分辨率下,如果还没有运行,我希望它执行。目前一切都很正常,除了我在控制台中遇到这个错误:无法在初始化之前调用砌体上的方法;试图调用“销毁”。这是我处理此任务的代码 $(window).lo

因此,我尝试将jQuery-massy插件(from:)与modernizr结合起来,在低分辨率时消除massy,以便我的div恢复为居中的部分宽度布局。我承认我的javascript技能仍在发展中,但我认为社区可能会在这方面帮助我

在低于768px的分辨率下,我希望砌体在激活时被破坏,在更大的分辨率下,如果还没有运行,我希望它执行。目前一切都很正常,除了我在控制台中遇到这个错误:无法在初始化之前调用砌体上的方法;试图调用“销毁”。这是我处理此任务的代码

        $(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');