不调用isotope.js的方法

时间:2014-03-11 03:10:51

标签: javascript jquery-isotope

我正在使用jQuery 1.11分钟和2014年1月下载的isotope.js。似乎有点卡住了一些方法。最新的Safari版本(v6.1.2)中的错误消息如下: 在加载和初始化页面时:

  

[Error]在初始化之前无法调用同位素上的方法;试图调用'追加'     (匿名函数)(isotope-docs.min.js,第1行)     (匿名函数)(isotope-docs.min.js,第1行)     完成(js_asana.js,第143行)     (匿名函数)(js_asana.js,第216行)

使用reLayout我得到了这个:

  

[错误]同位素实例没有这样的'reLayout'方法     (匿名函数)(isotope-docs.min.js,第1行)     (匿名函数)(isotope-docs.min.js,第1行)     switchMismatch(js_asana.js,第179行)     (匿名函数)(js_asana.js,第206行)     每个(jquery-1.11.0.min.js,第2行)     (匿名函数)(js_asana.js,第191行)

也许我没有正确宣布事情。在html页面的头部初始化jQuery和同位素:

<head>
<meta charset="utf-8">
<script src="js/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="js/isotope-docs.min.js"></script>
<link rel="stylesheet" type="text/css" href="css/style.css">
<script type="text/javascript" src="js/js_asana.js" charset="utf-8"></script>
</head>

“js_asana.js”页面是一个单独的javascript页面,代码为:

$( document ).ready(function() {
 var $container1 = $('#container');
 var $container2 = $('#container2');
function complete(t, dd, i, c) {
///this function is passed along from a array built from a JSON GET call
///that part works ok and passes along the variables
var $newEls = $('<div class="element ' + e_type + more + ' isotope-item" data-category="lanthanoid" style="font-size:1em;" id="' + i + '"><p class="number">' + due_date_text + '</p><h3 class="symbol">' + c + '</h3><h2 class="name">' + t + '</h2></div>');
        if (c == true) {
             //code
             $container2.append( $newEls ).isotope( 'appended', $newEls );
        }else{
        $container1.append( $newEls  ).isotope( 'appended', $newEls );
        }
return false;
      }

这不是完整的代码,但如果有人需要演示,我可以提供编辑。

这是使用reLayout的功能。也许我不应该在函数内部调用这些方法?请注意,所有函数都在document.ready函数

function switchMismatch(s, n, d, i, c){
             ///this function is in case a task is completed
             /// ...or moved from 'complete' to 'incomplete for whatever reason.
             var $which_container
             s == 1 ? $which_container = $container1 : $which_container = $container2 ;
             var $removable = i;
             complete(n, d, i, c);
             jQuery('#' + i).remove();
             $container1.isotope( 'reLayout');
             $container2.isotope( 'reLayout');
             return false;
}

1 个答案:

答案 0 :(得分:2)

在使用.isotope('appended',...)之类的方法之前,您需要首先使用通用.isotope()初始化Isotope。尝试在doc ready中添加此内容:

$( document ).ready(function() {
  // init isotope
  var $container1 = $('#container').isotope();
  var $container2 = $('#container2').isotope();
  ...
});