Masonry.js失败了.不能在Wordpress中调用undefined(Outerlayer)的'create'

jos*_*osh 14 javascript wordpress wordpress-theming jquery-masonry

关于masonry.js,我有一个奇怪的问题,我似乎无法找到其他任何地方.

我有最新的(3.10)版本,我将它包含在我的wordpress主题的functions.php文件中,如下所示:

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');
Run Code Online (Sandbox Code Playgroud)

哪个加载脚本很好.就像现在一样,我没有做任何其他事情,但脚本失败了:

Uncaught TypeError: Cannot call method 'create' of undefined masonry.js?ver=3.5.2:37
Run Code Online (Sandbox Code Playgroud)

好像它不能在窗口上调用create.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;
  };
Run Code Online (Sandbox Code Playgroud)

我已经尝试以不同的方式排列脚本,并且只在$(document).ready()(我相信wordpress'enqueue_script无论如何?)时将其拉入.

那么,有没有人有任何想法可以解决这里的问题或冲突?或者有没有经历过类似的事情?

(我使用的是jQuery 1.83,虽然砌体不应该根据网站要求jquery.)

tim*_*tes 33

我有这个确切的问题.我的猜测是你只使用github的原始masonry.js文件.此版本的砌体需要一些其他插件才能正常工作.

具体来说,您收到此错误是因为您没有安装Outlayer.如果您只是想要砌筑和运行,您应该从砌体网站获取完整的生产包. 它包括必要的插件.

希望这可以帮助!