是否有FlexSlider的destroy方法

当我异步调用新的图库列表时,我试图在页面刷新时重新初始化FlexSlider。

我认为下面的例程可行,但事实并非如此。 即使新图像成功加载,似乎第一个FlexSlider仍然存在。

有没有办法摧毁,然后重建画廊?

谢谢

function flexInit() { $('.flexslider').flexslider({ animation: "slide", controlsContainer: ".paginator", manualControls: 'a', after: function(slider){ if(slider.atEnd == true) { // ??? slider.destroy; galBuild(); } } }); } function galBuild() { $.getJSON("/gallery/next/"+galID, function (data) { var results = data.objects; var list = $(".flexslider ul.slides"); var i = 0; $.each(results, function () { list.append('
  • ' + results[i].title + '

    ' + results[i++].caption + '

  • '); }); flexInit(); }); } galBuild();

    我正在使用不同的方法,即

    你已经开始使用一个flexslider:

    
         $('#元素).flexslider({
          动画:“幻灯片”,
           controlNav:false,
           directionNav:是的
         });
    
    

    当我想在之前创建的滑块中更改幻灯片并重新启动它时,id执行以下操作:

    • 创造临时div:

       $('#element).before(' 
      ');
    • 用之前创建的滑块删除div

       $('#element).remove(); 
    • 将新幻灯片列表插入临时div:

       var html = ` 
    • 在临时div上启动flexslider

       $('#element_temp').flexslider({ animation: "slide", controlNav: false, directionNav: true }); 
    • 将div ID从element_temp更改为element

       $('#element_temp').attr('id','element'); 

    它适用于多个flexliders

    Rob我调查了这个并找到了解决方案

    您需要像这样修改您的function

     function flexInit() { $('.flexslider').flexslider({ animation: "slide", controlsContainer: ".paginator", manualControls: 'a', after: function(slider){ if(slider.atEnd == true) { slider.addSlide(galBuild()); } } }); } function galBuild() { $.getJSON("/gallery/next/"+galID, function (data) { var results = data.objects; var i = 0; $.each(results, function () { return ('
  • ' + results[i].title + '

    ' + results[i++].caption + '

  • '); }); }); } flexInit();

    您还需要在slider.update函数中的flexSlider.js文件中进行一些修饰。 现在它没有检查位置变量,如果它未定义 ,所以你也必须检查它。

    最简单的方法是从元素数据集中删除flexscroll

     function flexInit() { $('.flexslider').flexslider({ animation: "slide", controlsContainer: ".paginator", manualControls: 'a', after: function(slider){ if(slider.atEnd == true) { slider.addSlide(galBuild()); } } }); } //this remove flexslider form element dataset $('.flexslider').removeData("flexslider"); 

    现在你可以自由地打电话了

     flexInit(); 

    并将重新创建您的flexslider。