没有方法砌体

时间:2013-08-22 15:44:35

标签: jquery jquery-masonry

我正在尝试使用jQuery使用最新的说明来处理jQuery:http://masonry.desandro.com/options.html

我在调用之前已经包含了js文件。电话看起来像这样:

 <script type='text/javascript'>
    $(document).ready(function() {
        $('#main').masonry({
          itemSelector: '.post-outer',
          isAnimated: true,
          isFitWidth: true
        });
    });
  </script>

它不起作用并在我的Chrome控制台中输出此错误:

  

未捕获的TypeError:对象[object Object]没有方法'masonry'

知道为什么会这样吗?

编辑:我已经尝试将呼叫置于HEAD以及BODY的底部。

EDIT2:我尝试了普通的javascript调用,而不是jQuery调用。我的控制台中的错误现在表明没有定义砌体。据我所知,虽然......

3 个答案:

答案 0 :(得分:2)

您不能加载砌体,或者无论您何时尝试加载它都是拒绝连接。我之所以这么说是因为这是我网站上的控制台会话。

> var masonry = new Masonry ( '#main' )
ReferenceError: Masonry is not defined // this tells me its not loaded
> var script = document.createElement("script"); // let's inject it
undefined
> script.type = "text/javascript";
"text/javascript"
> script.src = "//cdnjs.cloudflare.com/ajax/libs/masonry/3.1.1/masonry.pkgd.js"
"//cdnjs.cloudflare.com/ajax/libs/masonry/3.1.1/masonry.pkgd.js"
> document.getElementsByTagName("head")[0].appendChild( script )
<script type=​"text/​javascript" src=​"/​/​cdnjs.cloudflare.com/​ajax/​libs/​masonry/​3.1.1/​masonry.pkgd.js">​</script>​
> masonry
ReferenceError: masonry is not defined
> var masonry = new Masonry()
Bad masonry element: undefined masonry.pkgd.js:1621 // woohoo, we can tell it's loaded now
undefined
> var container = document.querySelector('#main');
undefined
> container
<div class=​"main section" id=​"main">​…​</div>​
> var masonry = new Masonry( container )
undefined
> masonry
// and we have it!
Layout {element: div#main.main section, options: Object, items: Array[1], stamps: Array[0], isResizeBound: true…}

答案 1 :(得分:1)

应该在砌体之前加载jQuery脚本标记。

答案 2 :(得分:0)

同样的问题随我而来,我会像这样使用我的代码,它适用于我

所以你可以试试这个解决方案,希望它能运作

   <script type='text/javascript'>
       jQuery.noConflict();
  (function($) {
            $('#main').masonry({
              itemSelector: '.post-outer',
              isAnimated: true,
              isFitWidth: true
            });
    })(jQuery);
      </script>