我正在使用梦幻般的Stellar.js(http://markdalgleish.com/projects/stellar.js/)来处理最近的项目,但我遇到了挑战:
当我通过AJAX更改内容时Stellar没有注意到(在这种情况下从html文件加载新div并使用jQuery的replaceWith方法)。所以,我的新元素没有视差,即使它们具有恒星数据属性。
我已经尝试在AJAX完成后再次在我的窗口上调用.stellar函数,但它没有做任何事情。
如何让Stellar正确地将视差应用于元素中的新AJAX?
答案 0 :(得分:3)
我知道很久以前发布的这个问题已经被接受,但对我来说上面的解决方案没有用,所以我只想分享一下这对我有用。
AJAX调用成功后,您可以像这样调用Stellar的刷新函数:
$.stellar('refresh');
以下是完整代码:
$.ajax({
type: 'GET',
url: ajaxUrl
}).done(function(data) {
$(targetElement).html(data);
$.stellar('refresh');
}).fail(function() {
// Do something else
});
答案 1 :(得分:1)
我发现我可以在我的jQuery AJAX回调中运行此代码,然后Stellar会正确地将parallax应用于我的新AJAX中元素:
$(window).data('plugin_stellar').destroy();
$(window).data('plugin_stellar').init();
答案 2 :(得分:0)
我知道这个话题已经过时但我想分享我找到的解决方案,希望它对那些仍在搜索的人有用。 首先创建函数:
function init () {
$(window).data('plugin_stellar').refresh();
}
jQuery(document).ready(function () {
// Initialise the plugin when the DOM is ready to be acted upon
init();
});
第二次在Ajax调用中插入此行:
// Reinitialise plugins:
init();