Подтвердить что ты не робот

Masonry.js не работает при загрузке. Не удается вызвать 'create' из undefined (Outerlayer) в Wordpress

Итак, у меня есть странная проблема, которую я не могу найти нигде, в отношении masonry.js.

У меня есть последняя версия (3.10), и я включаю ее в свой файл functions.php темы wordpress так:

function enqueue ()
{
    wp_register_script( 'masonry', get_stylesheet_directory_uri() . '/js/masonry.js', array( 'jquery' ) );
    wp_enqueue_script( 'masonry' );
}

add_action( 'wp_enqueue_scripts', 'enqueue');

Что загружает тон script. Как и сейчас, я ничего не делаю с этим, но script терпит неудачу:

Uncaught TypeError: Cannot call method 'create' of undefined masonry.js?ver=3.5.2:37

Похоже, он не может вызвать create на window.Outerlayer, поскольку он не существует.

Вот код, о котором идет речь, начиная с строки 34 из masonry.js:

// used for AMD definition and requires
function masonryDefinition( Outlayer, getSize ) {
  // create an Outlayer layout class
  var Masonry = Outlayer.create('masonry');

  Masonry.prototype._resetLayout = function() {
    this.getSize();
    this._getMeasurement( 'columnWidth', 'outerWidth' );
    this._getMeasurement( 'gutter', 'outerWidth' );
    this.measureColumns();

    // reset column Y
    var i = this.cols;
    this.colYs = [];
    while (i--) {
      this.colYs.push( 0 );
    }

    this.maxY = 0;
  };

Я попытался присвоить script по-разному, а также потянуть его только тогда, когда $(document).ready() (который, я считаю, wordpress 'enqueue_script все равно?).

Итак, есть ли у кого-нибудь идеи, что может быть проблема или конфликт? Или кто-нибудь испытал что-то подобное?

(Я использую jQuery 1.83, хотя для кладки не требуется jquery в соответствии с сайтом.)

4b9b3361

Ответ 1

У меня была эта точная проблема. Я предполагаю, что вы используете только файл raw masonry.js из github. Эта версия кладки требует, чтобы несколько других плагинов работали правильно.

В частности, вы получаете эту ошибку, потому что у вас нет Outlayer. Если вы просто хотите получить кирпичную кладку и запустить ее, вы должны захватить полный производственный пакет с