如何重置滑块1 onLeave?

时间:2014-08-11 16:10:15

标签: javascript jquery fullpage.js

我正在使用fullPage.js的最新版本(2.1.8)来创建仪表板,通过更新window.location自动垂直和水平滑动。

请参阅jsfiddle

我面临的问题是,当我们回到第2部分时,滑块仍处于最终滑动位置,并且必须滑回到幻灯片1,然后才能向前滑过幻灯片。

我已尝试按照Issue #129的说明操作,这些说明似乎适用于使用1.7.2版本的人:

  • 使scrollSlider功能公开
  • 更改对函数
  • 的调用名称
  • 申请onLeave事件代码:

    onLeave: function(index, nextIndex, direction){
        //getting the section by the index
        var section = $('.section').eq((index - 1));
    
        //if the section we are leaving has slides...
        if (section.find('.slides').length) {
    
            //moving to slide 0
            $.fn.fullpage.scrollSlider(section, 0);
        }
    }
    

但是,这对行为没有影响。

当使用最新版本的fullPage.js移动到下一部分时,是否有人能够建议一种方法来确保滑块始终放回默认幻灯片?

一切顺利,

AshBestos

1 个答案:

答案 0 :(得分:3)

我遇到了同样的问题。解决了函数scrollSlider()的副本。

将其命名为scrollDefault()函数并将此函数设置为public。

在我的jquery.fullPage.custom.js

$.fn.fullpage.scrollDefault = function(section, slide){
  if(typeof slide != 'undefined'){
    var slides = section.find('.slides');
    var destiny =  slides.find('[data-anchor="'+slide+'"]');

    if(!destiny.length){
      destiny = slides.find('.slide').eq(slide);
    }

    if(destiny.length){
      landscapeScroll(slides, destiny);
    }
  }
};

setTimeout是一个快速&脏解决方案隐藏滚动动画。因此,当您单击另一部分然后返回时,您会看到第一张幻灯片。

在我的$(文件).ready(function(){

onLeave: function(index, nextIndex, direction){
  setTimeout(function(){
    var section = $('.section').eq((index - 1));
    if (section.find('.slides').length) {
      $.fn.fullpage.scrollDefault(section, 0);
    }
  }, 500);
}