更新
对不起,伙计们,我的不好,我的猜测错了。这不是因为replaceWith
没有完成。实际上由于isotope
而未应用于替换元素。我目前正在使用.isotope( 'destroy' )
并重建整个页面。它不那么性感,因为用户会看到页面上的所有元素都在移动。现在它已成为isotope
问题。有更好的方法吗?
我正在使用replaceWith
将atml元素替换为ajax cal中的新元素。之后,我需要reLayout
(来自isotope
插件)我的页面。
我的部分代码:
success: function(result){
var data = $(result);
div.replaceWith(data);
$(document).ready(function() {
$("div#columns").isotope('reLayout');
});
}
问题是被替换的元素和旧元素是重叠的。我猜它是因为在重新加载的html元素被完全加载之前页面被重新传递。因此,我添加了$(document).ready()
,但它仍然没有用。所以我想知道reLayout
完成后有没有办法运行replaceWith
?感谢。
答案 0 :(得分:1)
遇到了同样的问题,并使用了以下解决方案(在上面的例子中解释):
div.replaceWith(data);
$("div#columns").data('isotope').insert(div).layout();
这会导致已被替换的项目被读取到同位素列表,然后重新应用现有布局(因此这似乎在预先存在的过滤器和排序上保持状态!)。