Jquery Cycle插件 - Ajax图像加载的大问题

时间:2011-02-08 16:12:55

标签: ajax plugins load cycle

我遇到了Jquery Cycle插件的问题。

我通过Ajax加载了画廊的图像。

当我单击图库旁边的按钮或上一个按钮时,序列无法正常工作。

有时,类activeSlide不会更改元素,也不会错过图库的元素。

如果我刷新页面,它可以正常工作。

当我进行ajax调用并更改图库中的图像时,我会在重新声明之前和之后销毁插件。

如果我为autosliding allworks设置了超时。

我发布了代码。

有人可以帮帮我吗?我试图找到一个解决方案是3天:(((((<(

谢谢Davide。

这是我的代码:

success: function(data){

    $('#imgcaption').cycle('destroy');//Before load data I destroy the gallery

    $('#dettaglio #imgcaption').empty();//I clean the div's
    $('#dettaglio #nav').empty();

            //I insert the new Images
            $.each(data.foto, function(index, value){
            $('#imgcaption').append('<div><img src="' + value + '" alt="" /></div>');           
    });

            //I redeclare the Cycle 
    $('#imgcaption').cycle({
        timeout: 0,
        fx: 'scrollHorz',
        speed: 500,
        pager: '#nav',
        pagerAnchorBuilder: function(idx, slide) { 
            return '<a href="#"></a>'; 
            }
    });

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。显然jQuery Cycle在ajax加载后仍会看到旧的DOM元素。因此,当您将.cycle()应用于新的AJAX DOM时,jQuery Cycle会将其绑定到AJAX的新DOM和“已删除”的旧DOM。

这就是为什么你的分页被搞砸了(更具体地说,第一组页面链接引用了旧的DOM,后面的set引用了新的AJAX DOM)。

因此,修复是在执行.cycle('destroy')后手动删除与循环相关的DOM元素

$(".cycleSelector").remove();
$(".pagerSelector").remove();

或者在你的情况下:

$("#imgcaption").remove();
$("#nav").remove();

我希望有所帮助!关于这个问题,网上有很多帖子,没有提出解决方案。现在我们有一个。 :)