我的 javascript 如下所示:
<script type="text/javascript">
$(document).ready(function() {
// isotope
var $container = $('#content');
$container.imagesLoaded( function(){
$container.isotope({
filter: '*',
itemSelector : '.element',
getSortData : {
colors : function( $elem ) {
return $elem.find('.colors').text();
},
number : function( $elem ) {
return $elem.find('.number');
}
}
});
var $sortedItems = $container.data('isotope').$filteredAtoms;
// filter items when filter link is clicked
$('#filter a').click(function(){
alert("filter");
var selector = $(this).attr('data-filter');
$container.isotope({ filter: selector });
return false;
});
// sorting
$('#sort a').click(function(){
var sortType = $(this).attr('data-sort');
$container.isotope({ sortBy : sortType });
return false;
});
});
});
function updateContent(path, args) {
$.ajax({
url: (path+args),
type: "POST",
success: function( data ){
$(allCards).remove();
$("#content").html( data );
$('#content').isotope( 'reLayout', callback );
}
});
}
function callback() {
alert("success: "+$('#content').height());
}
</script>
每当我使用 updateContent() 函数时,#content div 的高度就会变为 0。我认为由于内容尚未完全加载并且同位素在下一组图像加载之前初始化,可能会发生竞争情况。
当我第一次加载文档时它工作正常。但是,当我使用 updateContent() 加载一组新图像时,它会将#content div 高度设置为 0。理想情况下,我希望能够加载一组新图像,并且同位素会像往常一样初始化,高度应该是所有图像的适当值以适合#content div。
以下部分需要修复,这就是我到目前为止所拥有的......
$(allCards).remove(); // remove all previous images
$("#content").html( data ); // load new images
$('#content').isotope( 'reLayout', callback ); // <- reinit isotope to manage the new images
基本上我希望它删除所有以前的图像并将所有新图像加载到数据中,同位素将与新图像一起使用。