0

我在最近的一个项目中使用了很棒的 Stellar.js ( http://markdalgleish.com/projects/stellar.js/ ) 来处理视差,但我遇到了一个挑战:

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

在 AJAX 完成后,我尝试再次在我的窗口上调用 .stellar 函数,但它什么也没做。

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

4

3 回答 3

3

我知道很久以前发布的这个问题已被接受,但对我来说,上面的解决方案不起作用,所以我只想分享这个对我有用的问题。

AJAX 调用成功后,您可以调用 Stellar 的刷新功能,如下所示:

$.stellar('refresh');

这是完整的代码:

$.ajax({
    type: 'GET',
    url: ajaxUrl
}).done(function(data) {

    $(targetElement).html(data);

    $.stellar('refresh');

}).fail(function() {

    // Do something else

});
于 2014-03-06T11:45:29.207 回答
1

我发现我可以在我的 jQuery AJAX 回调中运行此代码,然后 Stellar 将正确地将视差应用到我的新 AJAX 元素中:

$(window).data('plugin_stellar').destroy();
$(window).data('plugin_stellar').init();
于 2013-05-10T06:29:34.643 回答
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(); 
于 2017-07-06T09:42:05.487 回答