stellar.js无法通过AJAX处理动态加载的元素

时间:2013-05-10 06:29:35

标签: javascript jquery ajax parallax

我正在使用梦幻般的Stellar.js(http://markdalgleish.com/projects/stellar.js/)来处理最近的项目,但我遇到了挑战:

当我通过AJAX更改内容时Stellar没有注意到(在这种情况下从html文件加载新div并使用jQuery的replaceWith方法)。所以,我的新元素没有视差,即使它们具有恒星数据属性。

我已经尝试在AJAX完成后再次在我的窗口上调用.stellar函数,但它没有做任何事情。

如何让Stellar正确地将视差应用于元素中的新AJAX?

3 个答案:

答案 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();