我正在使用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;
}
答案 0 :(得分:2)
在使用.isotope('appended',...)
之类的方法之前,您需要首先使用通用.isotope()
初始化Isotope。尝试在doc ready中添加此内容:
$( document ).ready(function() {
// init isotope
var $container1 = $('#container').isotope();
var $container2 = $('#container2').isotope();
...
});