所以我遇到一个奇怪的问题,似乎在其他地方都找不到关于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');
它可以成功地加载脚本。目前为止,我没有对它进行任何其他操作,但是脚本失败了:
Uncaught TypeError: Cannot call method 'create' of undefined masonry.js?ver=3.5.2:37
似乎无法在 window.Outerlayer 上调用 create 方法,因为它不存在。
以下是相关代码,从 masonry.js 的第34行开始:
// 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;
};
我尝试了不同的方法来排队脚本,以及仅在$(document).ready()时拉取它(我相信WordPress' enqueue_script也是这样做的?)。
那么,有人对这里的问题或冲突有任何想法吗?或者有人遇到过类似的情况吗?
(我正在使用jQuery 1.83,尽管根据该网站的说法,masonry不需要jQuery。)