生成されたdivブロックを使用して石積みディスプレイを作成しようとしています。動的に生成されたDOMElementにjQueryを適用します
<div id="grid" class="panel">
<div id="grid">
<div id="posts">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/masonry/3.3.2/masonry.pkgd.js"></script>
<script src="assets/js/masonry.js"></script>
<div class="post"> <!-- The .post are generated dynamically -->
<!-- Block content generated dynamically -->
</div>
\t <div class="post"> <!-- The .post are generated dynamically -->
<!-- Block content generated dynamically -->
</div>
</div>
</div>
</div
とjQuery: strutctureは以下の通りです
jQuery(window).load(function() {
\t // Takes the gutter width from the bottom margin of .post
\t var gutter = parseInt(jQuery('.post').css('marginBottom'));
\t var container = jQuery('#posts');
\t // Creates an instance of Masonry on #posts
\t container.masonry({
\t \t gutter: gutter,
\t \t itemSelector: '.post',
\t \t columnWidth: '.post'
\t });
/*
* some code
*/
});
ページがロードされるたびに、私はエラーを取得する:捕捉されないTypeError:container.masonr yは関数ではありません。 私はjQueryのでは初心者だ、と私はhere
から石工テンプレートを使用する理由です私はすでにとして、いくつかの記事を見てきました:Event binding on dynamically created elements? しかし、私は私の問題を解決する方法を見つけ出すことができませんでした。私はまだ作成されていない要素にイベントをバインドしようとしているので、エラーが発生したと考えます。私にとって
あなたのページにメーソンリーを2回掲載しているようですが、非CDNバージョン –
を削除したいのですが、あなたのjsファイルを '
' –にロードしようとしませんか?CDNバージョンで** jQuery .post ')。コンテナ({...}); **私のassets/js/masonry.jsにコンテナコンストラクタの定義が含まれていないためです。 –