Question: I have initialize masonry plugin - works OK,

than I destroy it for media width <= 767px - it was destroyed

but when I return back to media width > 767px and initialize masonry again it doesn't work.

why?

or is there any another solution to turn off masonry plugin and later turn it on on some event?

this is my code:

```
var masonryData = {
    isInitLayout: true,
    isResizeBound: false,
    itemSelector: '.item',
    columnWidth: 300,
    gutter: 20,
    transitionDuration: '0.5s'
};

function initializeMasonry(masonryData){
    if (jQuery().masonry) {
        var masonryContainer = jQuery('.masonry').masonry(masonryData);
        jQuery(masonryContainer).imagesLoaded(function(){
            jQuery(masonryContainer).masonry(masonryData);
        });
    }
}

function destroyMasonry(){
    if (jQuery().masonry) {
        jQuery('.masonry').masonry();
        jQuery('.masonry').masonry('destroy');
    }
}

```

I'm using enquire plugin so I use match/unmatch methods for js media queries:

```
$.Site.Match.smallScreen = function() {
   ...
   destroyMasonry();
   ...
}

$.Site.Match.mediumScreen = function() {
   ...
   initializeMasonry(masonryData);
   ...
}

```

Many thanks for help

Answer: 
Finally after hours of reading the docs, I found that masonry will make a $.data('masonry') to masonry element.

You can read more about it in masonry docs [here](https://masonry.desandro.com/methods.html#jquery-fn-data-masonry).

This data will affect the items position in masonry. So, we need to remove this data with $.removeData('masonry') after we destroy the masonry.

```
// init masonry
$('.masonry-container').masonry();

// destroy masonry
$('.masonry-container').masonry('destroy');
$('.masonry-container').removeData('masonry'); // This line to remove masonry's data

// re-init masonry again. The position will be nice
$('.masonry-container').masonry();

```
For what it's worth, I ended up solving this a different way. Masonry is just setting some styles. So using a media query, I set the following CSS to basically render masonry useless:

```
@media (max-width: 768px) {
  .item {
    position: relative !important;
    left: auto !important;
    top: auto !important;
  }
}

```

Now, I always initialize masonry, and never uninitialize/reinitialize it. It's on all the time, but CSS media queries with `!important` take priority over the inline styles set by Masonry.