Ошибка: "не удается вызвать методы для кладки до инициализации" при объединении кладочной сетки с поиском и фильтром плагина WordPress

Я пытаюсь использовать сетку Masonry с плагином WordPress Search и Filter Pro, используя ajax для загрузки постов после фильтрации. Я получаю ошибку:

Ошибка: "не может вызывать методы для кладки до инициализации; попытался вызвать reloadItems

И Masonry, и Search and Filter решают эту проблему.

Masonry рекомендует использовать этот код:

$grid.imagesLoaded( function() {
  // init Masonry
  $grid.masonry({
    // options...
  });
  // Masonry has been initialized, okay to call methods
  $grid.append( $items )
    .masonry( 'appended', $items );
});

Search and Filter рекомендует использовать этот код:

//detects when the ajax request has finished and the content has been updated
// - add scripts that apply to your results here
$(document).on("sf:ajaxfinish", ".searchandfilter", function(){
    console.log("ajax complete");
    //so load your lightbox or JS scripts here again
});

Итак, я включил это и мой окончательный код:

(function ($) {
    var $container = $('.grid');

    $container.imagesLoaded(function () {
        // INITIALIZE MASONRY
        $container.masonry({
            itemSelector: '.entry',
            columnWidth: '.entry',
            gutter: 40,
        });
        // MASONRY HAS BEEN INITIALIZED, OKAY TO CALL METHODS
        $(document).on("sf:ajaxfinish", ".searchandfilter", function () {
            $container.masonry('reloadItems');
        });
    });

}(jQuery));

но ничего не меняется. Я получаю ту же ошибку.

1 ответ

Это то, что я использовал.

jQuery(document).ready(function($) {    

function loadMasonry(){

    //$container will always be a new copy
    var $container = $('.featured-grid-thirds');

    //running images loaded again after page load / ajax event 
    $container.imagesLoaded(function () {
        // INITIALIZE MASONRY
        $container.masonry({
            itemSelector: '.featured-grid-item',
            columnWidth: '.featured-grid-sizer',
            gutter: '.gutter-sizer',
            percentPosition: true
        });
        // Masonry has been initialized, okay to call methods
        // reload masonry
        $container.masonry('reloadItems');
    });
}

//Call on page load etc...
loadMasonry();

//then also call it after ajax event
$(document).on("sf:ajaxfinish", ".searchandfilter", function () {
    console.log("ajax complete");
    loadMasonry();
});


});
Другие вопросы по тегам