2013-05-10 54 views
0

我使用的是梦幻般的Stellar.js(http://markdalgleish.com/projects/stellar.js/)上最近的一个项目视差的动态加载元素的工作,但我已经遇到了挑战:stellar.js不是通过AJAX

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

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

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

回答

1

我发现我可以在我的jQuery AJAX回调运行该代码,然后将恒星正确运用视差我的新AJAX'd中的元素:

$(window).data('plugin_stellar').destroy(); 
$(window).data('plugin_stellar').init(); 
3

我知道这个问题被张贴在很久以前已被接受,但对我而言,上述解决方案无效,所以我只想分享这对我有用的东西。

你之后AJAX调用成功,您可以拨打恒星的刷新功能,像这样:

$.stellar('refresh'); 

下面是完整的代码:

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

    $(targetElement).html(data); 

    $.stellar('refresh'); 

}).fail(function() { 

    // Do something else 

}); 
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();